logoalt Hacker News

There Is Life Before Main in Rust

67 pointsby mmastraclast Thursday at 5:32 PM17 commentsview on HN

Comments

mmastracyesterday at 5:26 PM

Author here, happy to answer any questions. I've been working on building some higher-level abstractions on link sections (specifically, link-time optimized collections like maps (1) and sorted slices (2)) and wanted to share the hard-fought knowledge from the last couple of months.

There's a decent amount of knowledge around pre-main work in Rust, but I think this is one of the first attempts to walk through mutable link sections, which open up a pretty wide world of optimization, IMO. Even without mutability, I figured there isn't nearly enough documentation on these approaches out there.

(1) https://docs.rs/scattered-collect/0.20.0/scattered_collect/m...

(2) https://docs.rs/scattered-collect/0.20.0/scattered_collect/s...

smy20011yesterday at 5:30 PM

> This post is 100% human-written. Claude was used for feedback and to assist with the linker symbol diagram. Cursor was used for feedback and to ensure examples were compilable.

Love this, I hope every blog have the same disclaimer about how AI is used.

show 1 reply
wild_pointeryesterday at 7:43 PM

I thought it was about prehistoric Rust before the main branch was created :)

jeffbeeyesterday at 6:26 PM

The general lesson of these things is main is not that special and it pays to understand how your program actually starts. This has little/nothing to do with Rust or other language tools. On Linux, given a static ELF program, the kernel returns to the IP given by e_entry, which can proceed to do anything. If the program is dynamic (has a .interp) then it loads the interpreter and returns to its e_entry instead. The interpreter, in turn, can do absolutely whatever.

Suracyesterday at 7:22 PM

everything abount Rust MUST have some AI in it nowerdays. even this article