aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
3 daysfix vec exampleHEADmasterKimplul
+ Compiler works fine, example was borked :) + Although, not a very good example I must admit, it bashes a hole into my nice memory analysis plan :(
4 daysadd comment about hole in my assumptionsKimplul
4 daysexample/vec fixesKimplul
+ Doesn't quite work yet, but compiles fine. Some issues were in the example itself, heh
4 daysfix nil check loweringKimplul
4 daysfix type -> tKimplul
4 daysfix extern closure call arg typeKimplul
4 daysfix occasional missing returnKimplul
4 daysadd exploded variables to contextKimplul
4 daysremember to mark nodes loweredKimplul
4 daysindent writeKimplul
4 daysadd fallback return pathKimplul
4 daysfilter out empty nodes from statement listKimplul
+ Fixes tail call analysis that was accidentally broken by 64146b46da45ce69ab380add00459f7b60fe9196 + Kind of wasteful to first allocate empty node and then just throw it away, but I don't have any better ideas at the moment
4 daysvec example produces C, but broken CKimplul
2026-01-06improve move checker to detect pointer leaksgncKimplul
+ Currently requires a lot of unnecessary `forget` statements, but at least some can likely be eliminated by doing some basic origin analysis, kind of like with groups
2026-01-06allow omitting ';' in trivial callsKimplul
2026-01-06work towards a simple integer vector implementationKimplul
+ Hopefully shows that useful programs can be implemented with the rules present + Still missing at least external functions with non-void returns
2026-01-06implement enough type analysis for vector exampleKimplul
+ Big commit, scary + Some details still a bit up in the air, mainly about move checking structure member access ('register' types are freely copied I guess, same as in rust? How about user types?)
2025-08-10small build system improvementsKimplul
2025-05-01Copy individual fields instead of a whole structKimplul
+ Still not quite as robust as I'd like (and the autovectorization problem persists) but at least there shouldn't be a risk of overwriting a field following the parameters
2025-03-30WIP: rewrite C++ backend to be CKimplul
+ C allows for a bit more control, and we can manually handle closure contexts. For example `examples/fib.fwd` now works for effectively any `n`, pretty cool. + Fairly slow Fibonacci, I must admit. Initial profiling indicates it's mainly due to branch mispredictions, but I'll have to look into this a bit deeper. + The code is a bit hacked together, for now I'm more interested in getting things working, I'll worry about making things pretty later. + For testing, there's also initial support for modules, just so I can print stuff to the terminal + This commit is way too big, lol
2025-03-23start sketching out type systemKimplul
2025-03-22use maps in scopeKimplul
2025-03-22improve printingKimplul
2025-03-22bump conts and remove c23 requirementKimplul
2025-03-18use generic contsKimplul
2025-03-18add move queuesKimplul
+ Returning blocks don't want to show moves for subsequent statements, but do want to show them for possible closure callers above.
2025-03-17fix some total movesKimplul
2025-03-17improve codegenKimplul
+ Probably kind of silly since I'll probably not use the C++ backend in the future but at least it's a bit easier to read what's going on + Total move checking doesn't seem to work in if statements, will have to fix at some point
2025-03-17detect leaksKimplul
2025-01-09initial ptr stuffKimplul
2025-01-09initial reference checkingKimplul
2025-01-06fix some analyzer warningsKimplul
2025-01-06implement move checking furthermvcheckKimplul
+ Enough that examples still compile, but missing references etc.
2025-01-04initial move checkingKimplul
+ Missing implementations for most things, but it already highlights an oversight in my initial plan, namely that currently, a function might call multiple of its closures, meaning that a closure wouldn't be allowed to move a value. I'm debating whether to check that only one closure from a parameter list is called at a time or if I should do what Hylo does and add in some kind of 'subscript' that's like a function but has slightly different rules?
2025-01-01run formatterKimplul
2024-12-28enough type checking for all examples to passKimplul
2024-12-20add enough type checking to compile uniq.fwdKimplul
2024-12-20fix generated files in .gitignoreKimplul
2024-12-11add note about closure callsKimplul
2024-12-08add some thought about error handlingKimplul
2024-12-07add a motivating caseKimplul
+ Hopefully it generalizes well, but at least it does use both lifetime and ownership intermixed
2024-12-06add trailing closuresKimplul
+ Useful for guard statements, not entirely sure about the final syntax but at least they're possible
2024-12-06formattingKimplul
2024-12-06show usage for examplesKimplul
2024-12-06fix some comments in the examplesKimplul
2024-12-06add types to parserKimplul
+ No actual type checking is implemented as of yet, but with references and pointers I should be able to start playing around with checking move semantics and so on + Might at some point also look into type propagation for let, annoying to have to specify the same thing twice.
2024-12-05add note about functions as expressionsKimplul
2024-12-05add extra requirement for returns that I forgotKimplul
2024-12-04remove mention that there's only a `uniq` exampleKimplul
2024-12-04implement expression handling furtherKimplul
+ Add some notes about returning functions that I started thinking about as a result of the fib example