back in the day you could write a function that ends in a call to another function in the same module, and the compiler could optimize out the stack frame for that call
I don't think you can do that with metadata-rich managed code systems like Java or .NET
@coldacid you'll see the same thing in the rust and clang compilers. usually language -> parse tree -> ast -> ever degrading cycles of turning the graph in to a stream of code (MIR) -> eventually ends up in things like SSA form (LLVM IR)
Starting to think I might have to build my own bookcases from half-inch plywood, but then I'd need access to a big CNC drill because there's no way I could drill the lag holes accurately by hand
@coldacid from what i recall hand machinists make liberal use of printers as well. have seen quite some builds where the cutting zone was printed on paper and they fixed it in place and cut it with the paper blueprint attached.