-
Notifications
You must be signed in to change notification settings - Fork 2.6k
Add Hare implementation #711
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
d2cec1c
to
c65605d
Compare
36dcab9
to
2aafd03
Compare
I only realised after finishing, that meta data for strings wasn't actually asked.
Style Guide: https://harelang.org/documentation/usage/style.html Also adds checks for argument count to all functions in core.
7b109ee
to
fce5149
Compare
Possible remaining TODOs:
the big slowdown (in the perf test) is not the GC itself (doesn't kick in during script evaluation rn), but that I'm now keeping track of allocated symbols in a dynamic array instead of a hashmap, commenting out the iteration in |
Symbols defined in the hare source are now borrowed from the stack.
This should make it easier to replace the hashmap implementation.
The new hashmap should be easier to copy and iterate over.
This fixes the performance issues with symbol creation.
Looks good. Merged! I've updated the README counts. Hare bumps the implementation language count to 89. 🎉 |
mal implemented in pure hare https://harelang.org/ using only its standard library
There's no GC, I try to clean up any non persistent allocations but really for the most part I'm just leaking all the memory.Metadata implementation is incomplete and only implemented for user defined functions and hashmaps, for everything else I used native types, adding meta data would probably require completely reworking that.There's lots of things to clean up and add checks for, but I won't get to that any time soon so I thought I'll just send the PR now, before I'll never do it.Had lot's of fun with the challenge, thanks for creating it!
Pull request requirements:
the implementation name.
Additional requirements if you are adding a new implementation (see FAQ for details):
impls/<IMPL>/Dockerfile
impls/<IMPL>/Makefile
IMPLS.yml
Makefile.impls
README.md