- Fix Dickinson modules? lol
- Take notes on phases, revisit Appel book
- Kempe ABI proper
- Fortran?
- https://github.com/Keith-Cancel/k-hash/blob/main/khash.h
- delink?
- Primality test (and link to C...)
- Totient function
- Needs sensible float support!
- splitmix random number generator? (or rather any pseudorandom number generator...)
- Exponentiation (O (log n))
- regular expressions? machine
- Linear scan register allocator
- Graph (?) register allocator
-
typed-process
?
- DList for arm backend? laying down asm...
- look at http://hackage.haskell.org/package/linearscan-hoopl
- Liveness analysis on a per-decl basis? (basic blocks)
-
lea
,xchg
?test
? -
11111
could be True, everything else is false (then could usexor
for int eq?) -> alternately8
could beTrue
, all else falsexor + popcnt
? - https://hackage.haskell.org/package/hashtables
- Difference lists when laying down atoms/IR
- Do sets actually help?
- https://hackage.haskell.org/package/hoopl (may be faster)
- https://hackage.haskell.org/package/fmlist
- Specific error for mismatched pattern wildcards
- The current setup ignores extern imports -> no it doesn't
- Exported functions w/ C ABI should be there (so it can link)
- Throw error when return value in C ABI is too big
- Constructors aren't monomorphized
- Tries to monomorphize constructors that aren't exported
- http://mlton.org/Monomorphise
- Constructors that call constructors don't dispatch/monomorphize properly?
- Correctly restore registers (C ABI)
- Warn on >256 constructors
- Error on >256 constructors?
- Constructors not inlined; need type specializations when one calls a constructor on a constructor!
- Save callee-save registers on C call
- caller-save registers (
popa
?) - Something block-like that only saves registers that are actually used
- caller-save registers (
- Inliner (all non-recursive?)
- Only save registers that get clobbered
- Aarch64 backend
- Arithmetic and patterns for
i8
- Patterns for words?
- or-patterns (easy enough?)
-
divMod
builtin? - Floats
-
fmt
subcommand -
abstype
for pointer abstract types?- maybe just builtin lol
- convert ints &c. between types
- REPL for type inspection?
- ─
- Pattern match exhaustiveness checker
- Tuples (?)
- Error messages should have line numbers
- Tail-call optimization (easier than I thought?)
- Mutually recursive function optimization (what ATS does?)
- tail recursion modulo cons ?
-
.intel_syntax noprefix
for arm - RCL/RCR/ROL/ROR
- real backend? https://github.com/AjayMT/nanoc
- neat: http://joy-lang.org/papers-on-joy/atomic-programs-of-joy
- fall through on last case arm
- Strip out loads to registers that aren't subsequently used (but not in a way that messes up the C ABI)
- https://en.wikibooks.org/wiki/LaTeX/Source_Code_Listings <- in papers
-
rem
builtin or the like? (basically functions in library)-
sal
,sar
?
-
-
popcnt
basically - combinators: http://tunes.org/~iepos/joy.html#swap
- Unit tests for type merge?
- Unit tests for catTypes?
- Test foreign calls (e.g.
random
)