Carp
jank
Our great sponsors
Carp | jank | |
---|---|---|
84 | 18 | |
5,393 | 1,413 | |
0.0% | 2.8% | |
0.7 | 9.2 | |
about 1 year ago | 10 days ago | |
Haskell | C++ | |
Apache License 2.0 | Mozilla Public License 2.0 |
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.
Carp
- How to Write a (Lisp) Interpreter (In Python)
-
Roc – A fast, friendly, functional language
Carp - https://github.com/carp-lang/Carp - "A statically typed lisp, without a GC, for real-time applications." where it's "Ownership tracking enables a functional programming style while still using mutation of cache-friendly data structures under the hood".
-
Ask HN: Looking for statically typed, No-GC and compiled Lisp/scheme
Looking for a personal project so open-source would be great, but maturity/production readiness is not really a factor.
The only significant thing i can find so far is https://github.com/carp-lang/Carp.
Anything notable that i might have missed ?
-
Lisp in Space
Not CL, but there is ulisp (http://www.ulisp.com/) for microcontrollers, supposed to be really tiny, and there is Carp (https://github.com/carp-lang/Carp) which is without a GC so seems suitable for real-time stuff.
- Good languages for writing compilers in?
-
Emerging Rust GUI libraries in a WASM world
Everybody is trying to make a more user-friendly Rust. The problem is that it is not clear yet whether that's possible, and if it is, how it may look. I know Vale and have tried it, though it's extremely early to judge anything so far. It does have a much stronger theoretical background than V, but even the theory is not completely clear at this point.
There is also Carp by the way: https://github.com/carp-lang/Carp
-
Microsoft rewriting core Windows libraries in Rust
(Carp)[https://github.com/carp-lang/Carp]
-
Lexer in Haskell
Carp (parser source code)
-
Carp lang: statically typed Lisp, no GC
Found this page to be a nice intro to the syntax and semantics:
https://github.com/carp-lang/Carp/blob/master/docs/LanguageG...
I'm excited about Carp's comprehensive and well documented[1] interoperability with C, which unlocks lots of potential for interfacing with existing libraries.
Tim Dévé has even created a game for the Nintendo Game Boy Advance by using Carp's C interoperability; you can play an emulated version online[2].
[1]: https://github.com/carp-lang/Carp/blob/master/docs/CInterop....
jank
-
Compiling a Lisp
There's an effort afoot to bring this to the Clojure world, with the lovely name jank: https://jank-lang.org
-
A Tour of Lisps
I also liked that reference since I had not heard of Jank before. It is a work in progress so I just added a calendar entry for 9 months from now to check it out. https://jank-lang.org/
-
Boehm Garbage Collector
I have been using the Boehm-Demers-Weiser GC for jank [1], the native Clojure dialect on LLVM with C++ interop. Since jank is a Clojure dialect, and Clojure is built primarily on persistent, immutable data structures, there are potentially a lot of references to objects, across many threads, and there's a lot of garbage being churned. I originally started with reference counting and RAII, using boost::intrusive_ptr and an atomic count. The GC was actually 2x faster, in the sequence benchmark I was trying to optimize.
At this point, jank is generally several times faster than the equivalent Clojure JVM code. I'm sure there are better GCs out there, in terms of performance, and I have my eye on MMTK [2] for a future upgrade, but the fact that remains is this: the Boehm GC is stupid simple to integrate and it's surprisingly fast. Compare it to MPS, MMTK, and others and both the documentation and the actual dev work required are worlds apart.
For a project which needs a GC but doesn't need to pick the absolute best one first, it seems like the best option, based on my research.
There will be a lot of room for this, once I build out more of the features. In particular, there will be a lot of Clojure libraries which need to gain jank support. Clojure doesn't require "porting", so to speak, since it has a special .cljc file which can use reader conditionals to check the host that it's in (clj, cljs, cljr, jank, etc). So anywhere those libs are using Java interop, we'd need to wrap it to use native interop instead.
On the compiler and tooling itself, I have some open issues here: https://github.com/jank-lang/jank/issues
The vast majority of it is heavy C++ work, though. Outside of that, the biggest gains will come from time spent on packaging, distribution, and testing on various platforms.
And if none of that sounds interesting or applicable, don't worry. Just be sure to join the Slack channel and hang out with us. :)
-
Using C++ as a scripting language, part 8
On the top of using C++ for scripting, and related to the discussion of CERN's ROOT/Cling, I am developing a Clojure dialect on C++/LLVM called jank: https://jank-lang.org/
jank is a true Clojure, meaning you get interactive, REPL-based development and a whole stdlib of persistent, immutable data structures and functions to transform them. But it's also C++, so you can write inline C++ within your jank source, and interpolate jank values within that. You can link with existing native code using LLVM and you can embed jank into your existing native projects to use for scripting.
jank is pre-alpha, right now, and I've only been showing it to Clojure devs so far, but there's a huge audience of C++ devs which may be interested in introducing Clojure to their native code.
- Leaving Clojure - Feedback for those that care
-
Janet for Mortals
I wonder if Jank [1] could be such a Lisp? I haven't played around with it, but I really like the idea and would love to see it get more traction.
-
Loopr: A Loop/Reduction Macro for Clojure
This isn't usable yet, but in active development by the author, and looks promising: https://jank-lang.org/
- Show HN: Programming Google Flutter with Clojure
-
What is most in need in Clojure open-source ecosystem?
Jank looks pretty legit: https://jank-lang.org/
What are some alternatives?
awesome-lisp-companies - Awesome Lisp Companies
sectorlisp - Bootstrapping LISP in a Boot Sector
ferret - Ferret is a free software lisp implementation for real time embedded control systems.
Fennel - Lua Lisp Language
femtolisp - a lightweight, robust, scheme-like lisp implementation
hy - A dialect of Lisp that's embedded in Python
babashka - Native, fast starting Clojure interpreter for scripting
mirage - MirageOS is a library operating system that constructs unikernels
trivial-gamekit - Simple framework for making 2D games
nim-esp8266-sdk - Nim wrapper for the ESP8266 NON-OS SDK
Nim - Nim is a statically typed compiled systems programming language. It combines successful concepts from mature languages like Python, Ada and Modula. Its design focuses on efficiency, expressiveness, and elegance (in that order of priority).
joker - Small Clojure interpreter, linter and formatter.