kitten
haystack
Our great sponsors
kitten | haystack | |
---|---|---|
13 | 5 | |
1,073 | 22 | |
- | - | |
1.2 | 1.9 | |
12 months ago | 5 days ago | |
Haskell | Rust | |
GNU General Public License v3.0 or later | MIT License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
kitten
-
Retro: A Modern, Pragmatic Forth
While not quite a Forth, Kitten is a stack language:
-
Stack-based array-friendly static-typed proof of concept
Since you're making a statically-typed concatenative language, I'll point you to a joy reference, kitten, notes to motivate type checking stack languages, and a paper that formalizes type checking for stack languages. Since this looks like a relatively high-level stack language (given the presence of ADTs), you may find that you want to add quotes to your language, specifically opaque quotes since your language is typed. In that case, you'll realize that you'll need a better way to formulate polymorphism over stacks, and the paper on type checking will provide that to you.
-
Why Concatenative Programming Matters
Author ended up doing a lot of work on Kitten https://github.com/evincarofautumn/kitten
-
I much prefer `data.action()` to `action(data). Is it an r/unpopularopinion?
You may like https://kittenlang.org/
-
The Kitten Programming Language
Like all other languages voted to the HN front page that claim that they have magically solved memory management, this project's website is simply lying.
Looking at https://github.com/evincarofautumn/kitten/issues/193: "Does kitten require garbage collection?" -- "Nope. [...] The plan is that boxed lists ([…], List) and closures ({…}) are reference-counted" and https://github.com/evincarofautumn/kitten/issues/131: "Explore GC strategies" -- "The C backend currently uses naïve reference counting."
A quick skim of kitten.c confirms that objects have a reference count field and are only really released when it drops to zero. (I didn't find code that increments the reference count, but I find it hard to care.)
The project's website claims:
> Automatic management of memory and resources with no garbage collector.
One can weakly argue that many people mean tracing garbage collection when they speak of garbage collection, and that reference counting is not garbage collection in this narrow sense. This is unhelpful at best.
The FAQ has the claim I quoted above, of which the "when you drop a value from the stack, it gets deallocated" appears to be simply false.
haystack
-
Seeking Language Project to Join
I will advocate for https://github.com/rtulip/haystack from /u/judiciaryDustcart
- Haystack: Statically typed, compiled, stack language
-
Stack-based array-friendly static-typed proof of concept
Feel free to look at the issues page to see what work I've got lined up: https://github.com/rtulip/haystack/issues
There's also a (not great) Tutorial if you want to browse through most of the language features.
What are some alternatives?
JDK - JDK main-line development https://openjdk.org/projects/jdk
jvm-parser - A Haskell parser for JVM bytecode files
mlatu - A declarative concatenative programming language
haskell-exp-parser - Simple parser parser from Haskell to TemplateHaskell expressions
resin - Vector space search engine. Available as a HTTP service or as an embedded library.
egison-quote - Quasi quotes for Egison expression
retroforth - This is a read-only mirror of the Fossil repository, made available via Git for your convenience.
language-dot - A library for the analysis and creation of Graphviz DOT files
ast-monad - A library for constructing AST by using do-notation
raw-feldspar - Resource-AWare Feldspar
porth
gale - Strongly-typed, minimal-ish, stack-based development at storm-force speed.