Skip to content

Latest commit

 

History

History
59 lines (58 loc) · 3.13 KB

TODO.md

File metadata and controls

59 lines (58 loc) · 3.13 KB

TODO

  • Documentation needs a higher-level strategy
  • Func: Expose reflection library for dynamic structure analysis
  • Func: Enable let vars at global scope
  • Use DIBuilder to add line-level debugging information
  • Data structures
    • string (as slices)
    • vectors
    • hash map
    • set
    • binary tree
    • avl tree / red-black tree
  • Ergo: Enable linking to variadic functions (like printf)
  • Rename typeid function to ctor_id or something similar.
  • Libs: Integrate JSON parsing and mess around with manipulating some existing JSON files
  • Compat: Automatically configure default POSIX/C/System "int" size on compiler startup
  • Perf: Implement native structures as non-pointer values
  • Perf: Escape analysis to avoid heap-allocation.
  • Perf: Explore using a conservative collector
  • Perf: Implement an inline directive to mark functions for inline expansion during optimization
  • Dev: Rework debug logging to filter based on taglevels, rather than just one global level (to enable debugging particular parts more specifically)
  • Pattern-matching
    • ctor matching
    • int matching
    • tuple matching
    • string matching
  • Play: Rewrite expect.py in Ace
  • decide on with (Python) / using(dispose) (C#) / 'defer' (Golang) style syntax for deterministic destruction - or ref-counting
  • Implement generic in-place sort for vectors
  • Ergo: Ability to import symbols from modules by name (symbol injection)
  • Add safety checks on casting (as)
  • Exercise: implement parser combinators in Ace
  • Implement closures with capture by value
  • Implement backtracking in unification of product types
  • Consider marking null-terminated strings differently for FFI purposes (ended up doing this as part of "safe-unboxing" for easier FFI.
  • Implement slice array indexing rg[s:end], etc...
  • Implement vector slicing for strings and arrays
  • Optimize scope_t's get_nominal_env and get_total_env to be cached
  • Maintenance: Change all status_t parts of compiler to use exceptions
  • Check for duplicate bound function instantiations deeper within function instantiation
  • Change := to be let by default
  • (un)signed integers
    • write a C integer promotion compatibility test as part of test framework
    • integers as a type with parameterized number of bits and whether to use sign-extend or zero-extend
    • promotions upon binary operators
    • prevent overloading integer operations unless one side is not an integer
    • deal with casting integers
  • implement let declarations
  • change str to use wchar_t as its underlying physical character type
    • use C99's mbstowcs and wcstombs to convert back and forth
    • propagate usage of utf8 for char
  • 'for' syntax - based on tests/test_list_iter.ace pattern
  • Ternary operator
  • Logical and/or (build with ternary operator)
  • Type refinements for ternary / conditional expressions
  • Implement vector literal checking and code gen
  • Design/Implement tags functionality (for integration with ctags and LSP)