MLRISC – A framework for retargetable and optimizing compiler back ends
cs.nyu.edu
cs.nyu.edu
https://smlnj-gforge.cs.uchicago.edu/scm/viewvc.php/MLRISC/?...
In the long run, we on Manticore - like most other projects - will probably give up the flexibility of MLRISC and contort our code generation to work with LLVM. It's hard to keep adding new instructions to MLRISC!
Could you expand on this? Based on the problem statement page, this seems to be the exact problem MLRISC tried to address. Is there something that keeps it from working well in practice?
It also doesn't help that everybody who has worked on MLRISC has long since moved on to other projects, so when you find what you think is a bug in something core, there's really nobody to chat with about it, get feedback on where the right place to make a fix is, etc.
*edit, `cloc` doesn't understand the sml/nj set of file types
Is about 100kloc of .sml
Past comment: https://news.ycombinator.com/item?id=8283025
from the site:
" ... •Macros can use the imperative paradigm to construct parse trees. Nim does not require a different coding style for meta programming.
•Macros cannot change Nim's syntax because there is no need for it. Nim's syntax is flexible enough.
•Statements are grouped by indentation but can span multiple lines. Indentation must not contain tabulators so the compiler always sees the code the same way as you do "
- no proper tail calls
- no way to cheaply check if arithmetic has overflowed, so performant arbitrary-precision integers are hard to implement
- hard to find GC roots on C stack
C-- is a better portable assembly language that was designed for such purposes.
Unfortunately it looks like it hasn't found wider adoption (except for GHC), similar to MLRISC.