aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
4 daysuse double quotes instead of single quotesHEADmasterKimplul
+ Apparently I forgot how shell quoting works, lol
4 daysadd initial reference invalidationKimplul
+ Makes vec example actually memory safe, which is cool + Specify owner > sub relationships with ">" in closure parameter lists, uses the same group idea as closure calls + Relies on users implementing functions in a consistent manner, since you can kind of do whatever with pointers. Presumably there would be a stdlib of vec/map/set etc. which applications could then use and by proxy be memory safe. Although some more checks wouldn't hurt, I suppose? + Not sure I like having reference invalidation be 'just a move', seems to work alright but the semantics of it are a bit muddy.
2026-02-26fix vec exampleKimplul
+ 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 :(
2026-02-26add comment about hole in my assumptionsKimplul
2026-02-26example/vec fixesKimplul
+ Doesn't quite work yet, but compiles fine. Some issues were in the example itself, heh
2026-02-26fix nil check loweringKimplul
2026-02-26fix type -> tKimplul
2026-02-26fix extern closure call arg typeKimplul
2026-02-26fix occasional missing returnKimplul
2026-02-26add exploded variables to contextKimplul
2026-02-26remember to mark nodes loweredKimplul
2026-02-26indent writeKimplul
2026-02-26add fallback return pathKimplul
2026-02-25filter 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
2026-02-25vec 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