fmm
fmm copied to clipboard
The uncurried minimal functional programming language for CPS transformation
# Problem - Cloning `String`s is expensive. # Solution - use `Rc` for strings in IR.
# Problem - Type check with structural typing is complex and takes a long time. - LLVM 4.0 (or 3.0?) switched to full nominal typing for this reason. # Solution...
See a compatibility table of calling conventions in readme.
# Problem - There are no function attributes available. - e.g. `inline`, `nounwind` - Therefore, certain optimization or hinting to backends are impossible. # Solution - Add `attributes` field to...
- The function pointers to continuations which are passed as an argument to every function currently can be stored in stacks. - Can it omit some extra stack operations?
- Forbid bitwise operations with float types.
- But we don't want too large alignment, which increases memory usage... https://github.com/raviqqe/fmm/blob/37c59628346293e085241f631b2e23d1799de24e/fmm/src/analysis/cps/stack.rs#L95