Cheeky  Timeline

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

50 most recent check-ins

2025-08-27
17:42
Indexed: replaced VecDeque (which it turns out doesn't work like c++ deque like I assumed 🤡) with a custom paged array implementation to avoid reallocations moving things around, breaking references and causing random segfaults. Shit has held up surprisingly well until now all things considered Leaf check-in: 8a20836a60 user: lac tags: trunk
2025-08-26
22:59
Fix default pretty printing rule that would have recursed infinitely if it was ever called check-in: 47421d8ddc user: lac tags: trunk
22:28
Remove a few imports that are were longer used check-in: cf3bf37108 user: lac tags: trunk
21:57
Imporve pretty printing a bit more. IR dumps now almost look remotely ok when squinting a bit check-in: 4ed7a564cb user: lac tags: trunk
21:48
Clean up the value encoding of all the fundamental types that have a direct representation, removing some old hacks from before builtin types were fleshed out enough check-in: 7c48c3426e user: lac tags: trunk
19:40
Make Value's debug trait impl actually use the pretty printing system so that IR dumps look a bit less like shit check-in: 8cf0b95224 user: lac tags: trunk
2025-08-25
23:32
Preserve irgen accross overload resolution as well check-in: 0ab1fe6a87 user: lac tags: trunk
23:20
Remove a stale comment check-in: 7332f228e2 user: lac tags: trunk
23:18
Fix coercion rules not preserving prior irgen queued up in the input value when constructing their result value (in particular in staged_call coercion rules) check-in: 9b6c09d753 user: lac tags: trunk
22:11
Clean up some tidy warnings check-in: 8b5bcc5fad user: lac tags: trunk
21:17
Implemented standalone if check-in: 170b8b9f5d user: lac tags: trunk
18:16
Change value weight calculation so that it depends only on nesting depth check-in: ac932191a4 user: lac tags: trunk
2025-08-24
14:57
[20_minutes_in_and_out_adventure.jpg]
  • Added tests for, and fixed compile time if
  • Added a "WrappedValue" type, considered a high penalty generic match to pass around "any comptime value" because the old way to do this was breaking the type system (implementing compile time if somehow exposed this issue)
  • Cleaned up the way builtin function calls are handled (to solve an issue exposed when implementing WrappedValue)
  • Fixed the way return values are type checked (to solve an issue exposed when refactoring the builtin function calls)
check-in: 7efeb325e0 user: lac tags: trunk
2025-08-12
10:23
Fix first, obvious bug in compile-time if check-in: 6b2f1796fe user: lac tags: trunk
10:20
Implemented compile-time if. check-in: 62bd78be59 user: lac tags: trunk
10:18
Set project to use rust 2024 (separate cl to isolate reformatting noise) check-in: d26a932f1e user: lac tags: trunk
2025-08-11
17:30
Update deps check-in: 2f1d8ae587 user: lac tags: trunk
17:23
Do not generate IR directly when commiting values, but instead maintain a tree of irgen functions and only run it after parsing an entire function body. This is necessary so we can pass around values and control where their computation is generated. It will be needed to implement shortcut evaluation operators, and any other intrinsic function that wants to create diverging execution flows for its operands. check-in: 2bb3142fb3 user: lac tags: trunk
2025-07-26
22:16
Remove the index from the function CFG dump, it's useless and pointlessly breaks the tests all the time check-in: a7fdb56d3f user: lac tags: trunk
22:09
Don't implicitely evaluate as part of the comptime builder, move that into an "eval" function to call explcitely when needed check-in: 6246e14e45 user: lac tags: trunk
2025-07-23
17:52
Add missing resolver::next() when pulling a brace block in get_expr_or_braceblock() check-in: 96f507833f user: lac tags: trunk
17:47
if statement/expr parsing check-in: 0cb948a1f8 user: lac tags: trunk
2025-07-22
18:25
Implement a function to reconcile multiple alternative values for a target type (for if expressions) check-in: 6943c47135 user: lac tags: trunk
17:30
call rule: remove the code to retrieve possible return types, which was intended to implement a completely wrong approach to handling if expressions check-in: b6a569ff05 user: lac tags: trunk
2025-07-17
18:05
Store StagedCall's callee into its type (we want the type of the result of a staged call to be defined by the StagedCall's type, it will be needed to unify the result types of if expression branches) check-in: 58351e7e4a user: lac tags: trunk
17:39
  • get_call_rule: cache and reuse the call rule found for the callee
  • call_rule: add a method to get all possible return types from the callee
check-in: 4869870073 user: lac tags: trunk
2025-07-16
18:04
Update deps check-in: 2b8e15e707 user: lac tags: trunk
17:54
Split out code block parsing so it can be reused for statements check-in: c0b234692c user: lac tags: trunk
2025-07-08
18:08
Ir, interpreter: add branch and conditional branch block terminators check-in: b31be64bdf user: lac tags: trunk
2025-07-04
17:22
Added a test for, and fixed variable assignment check-in: e653aaac86 user: lac tags: trunk
2025-07-02
18:04
  • Added missing context guards when trying multiple signature branches and between candidate typechecking rules
  • Added proper typechecking rules error handling for cases that are clearly wrong and shouldn't fall back to the next best rule (which accidentally "worked" because of the above)
  • Removed the hackish "coercing a fresh identifier against something yields an error" coercion rules, instead fixed the comptime builder that incorrectly discarded values that were already comptime constants
  • Fixed declaring anonymous functions
  • Added code to dump the IR (cfg) of a function
  • Added a test for (and fixed) var declarations
check-in: a9c9f4867f user: lac tags: trunk
2025-06-18
21:05
Update deps check-in: b70279616d user: lac tags: trunk
21:02
Minor cleanup check-in: 306fd653fa user: lac tags: trunk
20:47
  • Added "Borrow" and "Release" Ir instructions, emitted when coercing a ref into a borrow
  • Added a system to push "cleanup" ir code generation to emit cleanup instructions after a call (for example borrow then release)
  • Implemented builtin intrinsic functions
  • Implemented assignment operator
  • Implemented coercion of var to mutable ref
check-in: f42510e932 user: lac tags: trunk
2025-06-09
19:15
  • added #as_param() to transform function parameter declarations
  • convert reference parameters to borrow parameters
check-in: 7e364d1b7b user: lac tags: trunk
2025-05-25
23:07
  • ir, interpreter: added address manipulation and storage instructions
  • very first version of local variable declaration (untested)
check-in: bc2803c7f8 user: lac tags: trunk
2025-05-20
20:14
  • Fixed func decl versus call precedence
  • Added tests for argument type function polymorphism
  • Factored some testing boilerplate and reorganized test files
check-in: a3518f27f5 user: lac tags: trunk
2025-05-19
22:44
Update deps check-in: dbc5f6fc0a user: lac tags: trunk
22:41
Added tests for, and fixed return type function polymorphism check-in: d07383c0d5 user: lac tags: trunk
2025-05-18
23:31
  • Fixed parsing issue with implicit return values
  • Fixed incorrect return value type when coercing StagedCalls to regular and builtin functions
  • Fixed wrong handling of return values in the interpreter
  • Added a test for function return values
  • Added a way to log the content of a cfg and display it in the log viewer
check-in: 30d3bacce0 user: lac tags: trunk
2025-05-17
12:35
  • Make Index<Location> default initialization return the current location, rather than a nil location
  • Make Index<Value> carry an Index<Location> to keep track of where values are referenced from (and not only where they are defined at)
check-in: 285364f380 user: lac tags: trunk
2025-04-24
18:26
Fix function argument passing, add test check-in: 72b4bca4cc user: lac tags: trunk
2025-04-23
21:30
Update deps check-in: 4f79f2f6e1 user: lac tags: trunk
21:22
  • Invalidate the resolver cache whenever a scope is pushed or popped (so that for instance the next token looked ahead after a comptime expression gets resolved again in the proper scope)
  • Directly take Sequences in the env api instead of sequence values
  • Fix the construction of function identities and the identity under which polymorphic functions are bound
  • Properly diagnose undefined identifiers used as part of an expression
  • Actually use anonymous holes instead of holes with empty strings as name
check-in: ed75f304eb user: lac tags: trunk
2025-04-16
21:09
  • Add missing Param wrappers when generating function types
  • Calling functions with parameters now works (the parameters themselves don't but one thing at a time)
check-in: dd1641219f user: lac tags: trunk
19:09
  • Fix GenericStagedCall definition
  • Fix coerce() to use the same ranking as polymorphic_func's try_resolve_macro_call (since non macro overload call resolution are now done through coerce())
  • Overload commit_value for StagedCall that triggers type resolution for the entire expression tree and detects and complains about failed resolutions
  • Added a test for invalid function call diagnostics
check-in: c1fda7a69c user: lac tags: trunk
2025-04-15
23:08
Update repo's syntax highlighting check-in: 226cd33d6d user: lac tags: trunk
22:56
logger: always enable wal mode on the db even during tests check-in: ae0c53fec7 user: lac tags: trunk
22:50
Update deps check-in: 9eb4c10cc6 user: lac tags: trunk
22:18
  • Improved logging
  • Implemented filtering in log_viewer
  • Diagnose undefined identifiers
check-in: d4bfca6b69 user: lac tags: trunk