Hacker News new | past | comments | ask | show | jobs | submit | kzrdude's comments login

The borrow checker is a very small factor in rust compile time

Performance has been worked on since Rust 1.0 or so, for all this time, there has been lots of work on compiler performance. There's no "before performance" :)

There are multiple avenues to improve both first and incremental compiles. They "just" require large architectural changes that may yield marginal improvements, so it's hard to get those projects off the ground. But after the last project all-hands I do expect at least one of these to be pursued, of not more.

There are cases where cargo recompiles crates "unnecessarily", cargo+rustc could invert the compilation pyramid to start at the root and then only compile reachable items (similar effect to LTO, but can produce a binary if an item with a compile error isn't evaluated, improving clean compiles), having better communication with linkers and having access to incremental linking would be a boon for incremental compiles, etc.


Inside certain boundaries, you can define custom markup syntax in a way, including abbreviations or more scary regex matching style rules.

But code syntax can not be changed an no you can't redefine if @ is a letter or not and flip flop that in your code like latex does.


At least the yarn has more han one strand. It's redundant at some level :)


Which editor or environment do you use to edit these?


VSCode and RStudio Desktop both have visual editor components, although they are not perfect. Positron is another editor that is data science specific built on top of VSCode that has Quarto rendering support.

There isn't an 'on-the-fly' rendering component for Quarto per se, but using the preview mode it will re-render a preview watching for file changes. A nice GUI editor for Quarto is definitely something people have been asking for. Closest equivalent would probably be Overleaf or Typst web editors?


I might be using Typst wrong, but it's like a visual programming environment. I guess I found my jsfiddle or other tools that other people use.

It's very satisfying to play with visualizations in Typst, especially since it updates the output so fast (instant for small projects).


Is there something like that for Typst?


If you write a loop `for x in array { sum += x }` Then your program is a specification that you want to add the elements in exactly that order, one by one. Vectorization would change the order.


The bigger problem there is the language not offering a way to signal the author’s intent. If an author doesn’t care about the order of operations in a sum, they will still write the exact same code as the author who does care. This is a failure of the language to be expressive enough, and doesn’t reflect on the IEEE spec. (The spec even does suggest that languages should offer and define these sorts of semantics.) Whether the program is specifying an order of operations is lost when the language offers no way for a coder to distinguish between caring about order and not caring. This is especially difficult since the vast majority of people don’t care and don’t consider their own code to be a specification on order of operations. Worse, most people would even be surprised and/or annoyed if the compiler didn’t do certain simplifications and constant folding, which change the results. The few cases where people do care about order can be extremely important, but they are rare nonetheless.


Yup, because of the imprecision of floating points, cannot just assume that “(a + c) + (b + d)” is the same as “a + b + c + d”.

It would be pretty ironic if at some point fixed point / bignum implementations end up being faster because of this.


They are, just check anything fixed-point for the 486SX vs anything floating under a 486DX. It's faster scaling and sum and print the desired precision than operating on floats.


Is that also the case for modern architectures? Eg is there SIMD fixed precision?


I wonder... couldn't there just be some library type for this, e.g. `associative::float` and `associative::doube` and such (in C++ terms), so that compilers can ignore non-associativity for actions on values of these types? Or attributes one can place on variables to force assumption of associativity?


That reminds me of this old system settings panel https://lowendmac.com/2015/32-bit-addressing-on-older-macs/

I remember the "enable 32-bit addressing" part (but it's not pictured..)


Still is, standard lecture is scheduled for example for 10-12. It starts at 10.15, pause 11.00-11.15, continues until 12.00. So it's neatly split in two 45 minute halves.


This has also been extended to evening events (dinners, balls, parties) in student towns. There “dk” stands for double quarter, so for example 18dk means that an event starts at 18:30, but you may show up from 18:00. And the time between 18:00-18:30 is used for mingling.

It’s a good convention.


Consider applying for YC's Fall 2025 batch! Applications are open till Aug 4

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: