lambda-mountain
lambda-mountain copied to clipboard
Compact Typed Assembler (5K SLOC)
With typed fragments this Term case is no longer necessary.
Make c libraries callable
``` (: y Sized). ( x ) ``` needs an error to indicate that an ascripted type is expected ``` (: x L) ```
Now branch conditionals can handle Boolean values correctly.
Currently some of the more complex patterned functions yield bodies with thousands of bytes of local variables. This is suboptimal. Mutually exclusive code paths shouldn't need to share copies of...
This is necessary for some things like the `set` function.
Sorted profiler output: 1 compile_CL_ArrowNilNil_COUNTER 1 compile_SB_data_SB_header_CL_ArrowSNil_COUNTER 1 compile_SB_exit_SB_cleanup_CL_ArrowSNil_COUNTER 1 compile_SB_finish_CL_ArrowNilNil_COUNTER 1 compile_SB_gnu_CL_ArrowNilNil_COUNTER 1 compile_SB_text_SB_header_CL_ArrowSNil_COUNTER 1 compile_SB_write_CL_ArrowNilNil_COUNTER 1 index_SB_typedefs_CL_ArrowNilAST_COUNTER 1 length_CL_ArrowU64String_COUNTER 1 main_CL_ArrowNilConsArray_QM_StringU64_COUNTER 1 malloc_SB_new_SB_page_CL_ArrowNilNil_COUNTER 1 preprocess_CL_ArrowNilNil_COUNTER 1 typecheck_CL_ArrowNilNil_COUNTER 1...
``` --profile-invocations ``` should be a plugin, not a core feature
``` f : L -> Nil; f : Sized -> Nil; ``` `L` should be a subtype of `Sized` but gets stuck.
don't specialize blob functions, only typecheck them once.