4 ms·
Everything on the landing page talks about jank's goals and aspirations. 100% Clojure compatibility is a big one. The progress page starts with this disclaimer:
by Jeaye 4y ago
Everything on the landing page talks about jank's goals and aspirations. 100% Clojure compatibility is a big one. The progress page starts with this disclaimer:
> jank is under heavy development. It's safest to assume that any feature advertised is partially developed or in the planning stages. There is no sales pitch here; just a lot of work and some big plans. All development happens on Github, so watch the repo there!
- masukomi 4y agoThe landing page explicitly says "jank is 100% compatible with Clojure." not "jank aims to be..." No, "jank IS" this is... ridiculously uncool and misleading.
- Jeaye 4y agoThanks for the feedback. The usage of "jank" here refers to its design; the concept of jank. This is different from its current implementation. jank is designed to be many things, as the landing page shows, and the implementation is catching up with that.
- nocman 4y agoNo matter how you spin it, this makes the landing page very misleading. Nobody cares about the "design" of a language when there is no implementation that fully realizes the design. Otherwise, anyone can say "my language is 100% compatible with clojure, but oh, yeah, the clojure compatibility part isn't fully implemented yet". If your landing page said "jank's goal is to be 100% compatible with clojure", or "jank is designed to be 100% compatible with clojure (when fully implemented)" that would be fine. Right now the statement is just false, because right now, the language isn't 100% compatible with clojure. I really think you should change the wording -- and I say that as someone genuinely interested in the project. I hope you achieve 100% clojure compatibility, that would be really cool. With the way things are worded now the first impression you are giving people is that the language implementation is way more complete than it is, which I believe will be a big negative for you in the long run.
- 3836293648 4y agoAren't the implementation and jank the same thing? It still reads like it's claiming to be Clojure. Like clang is still C, just like GCC is still C
- ordinaryradical 4y agoCan you explain the type checking a bit more? Is this occurring within the JIT for compilation efficacy or is the goal here that you would get gradual type inference across a codebase facilitated by some kind of LSP?
- Jeaye 4y agoType checking gets wonky in the REPL world, since things are changing a lot. During JIT usage (i.e. REPL usage or running a program right from source), type checking happens for each new form, taking into account what it knows of the types so far. In this context, some things, such as redefining vars, don't retroactively type check all previous usages of the var. So that sort of analysis is disabled. During AOT compilation, though, jank does whole program analysis and uses the type information to box/unbox, monomorphize, compute at compile-time, etc. I'll be publishing documentation on each of these designs (the type system, the JIT, the interop support) on the website as things move forward. Stay tuned. :)
- moomin 4y agoHonestly I don’t think compatibility with “pure Clojure” is that useful. Almost everything has a couple of native calls hidden away.
- Jeaye 4y agoMost libraries I tend to use are generally pure Clojure, with some reader conditionals at the edges. jank will also support reader conditionals, so those libraries can grow to support C++ interop where needed.
- bshanks 4y agoYou could probably make everyone happy just by copying that text to the top of the landing page, as an additional paragraph just above where the "Current progress" button is, right after "..ensure clean and correct multi-threaded designs."