Y
HN Search
Hacker News Search
new
|
comments
|
top
|
jobs
Jeaye
searching PlanetScale…
1.
▲
2.
▲
3.
▲
4.
▲
5.
▲
6.
▲
7 ms
·
31.
▲
by
Jeaye
11mo ago
This is superb. Thank you for making it and licensing it MIT. I think this is a contender to replace the lexer within jank. I'll do some benchmarking next year and we'll see!
32.
▲
by
Jeaye
11mo ago
Yeah, this isn't quite C++ interop on its own. It's C++ interop via C , which is an incredibly pertinent qualifier. Since we go through C, opaque pointers are needed for everything, we can't stack allocate C++ values, we nee
33.
▲
by
Jeaye
1y ago
YES! Use the Proton version, not the native Linux version.
34.
▲
by
Jeaye
1y ago
Rocket League works just fine for me, via Proton. I have over 4k hours in, each one of them done from Linux. BakkesMod also works, thanks to https://github.com/CrumblyLiquid/BakkesLinux Rocket League has a platinum rat
35.
▲
The jank community has stepped up
(jank-lang.org)
40 points
by
Jeaye
1y ago
|
1 comments
36.
▲
by
Jeaye
1y ago
A GC is nowhere near the most difficult part of this. In 2014, there was no viable technology for JIT compiling C++, and very little technology for JIT compiling native code in general.
37.
▲
by
Jeaye
1y ago
I started with reference counting, but the amount of garbage Clojure programs churn out ends up bogging everything down unless a GC is used. jank's GC will change, going forward, and I want jank to grow to support optional affine typin
38.
▲
by
Jeaye
1y ago
> i mean it's as prone to error as any other thing that relies on string munging. This is misleading. Having done a great deal of both (as jank also supports C++ codegen as an alternative to IR), if the input is a fully analyzed AST
39.
▲
by
Jeaye
1y ago
I've pondered this for a while and I have no idea how jank is a recursive acronym. What're you seeing that I'm not?
40.
▲
by
Jeaye
1y ago
I hear you when it comes to C++ portability, ABI, and standards. I'm not sure what you would imagine jank using if not for LLVM, though. Clojure uses the JVM, jank uses LLVM. I imagine we'd need _something_ to handle the JIT runti
41.
▲
by
Jeaye
1y ago
My reasoning is this: jank is written in C++. Its compiler and runtime are both in C++. jank can compile to C++ directly (or LLVM IR). jank can reach into C++ seamlessly, which includes reaching into its own compiler/runtime. Thus, the
42.
▲
by
Jeaye
1y ago
There are upsides to this approach. Coupling Swift's AST with Clang's AST will allow for the best codgen, for sure. However, the huge downside to this approach, which cannot be overlooked, is that Clang (not libclang) is not desig
43.
▲
by
Jeaye
1y ago
Which particular delta between the title and the content gave you extreme pause?
44.
▲
by
Jeaye
1y ago
To be fair, jank embeds both Clang and LLVM. We use Clang for C++ interop and JIT C++ compilation. We use LLVM for IR generation and jank's compiler back-end.
45.
▲
by
Jeaye
1y ago
Hey! I'm here and receptive. I completely agree that Clang could solve this by actually supporting my use case. Unfortunately, Clang is very much designed for standalone AOT compilation, not intertwined with another IR generating mecha
46.
▲
Jank is C++
(jank-lang.org)
289 points
by
Jeaye
1y ago
|
95 comments
47.
▲
by
Jeaye
1y ago
Clojure is still going and, in terms of dialects, still growing. According to the 2024 Stack Overflow survey, Clojure is the third highest paying job by language. https://survey.stackoverflow.co/2024/technology#top-payi
48.
▲
by
Jeaye
1y ago
jank has a GC, just like Clojure. jank is Clojure. The seamless C++ interop allows for stack-allocated C++ objects, as well as manual memory management, but the default is that everything is tracked by the GC.
49.
▲
by
Jeaye
1y ago
jank will lean heavily into leiningen, though it will have deps.edn support. I think that the process of doing this is much simpler than whatever Clojure CLI devs are doing these days: lein new jank hello-world cd hello-world
50.
▲
by
Jeaye
1y ago
> There exists a much smaller subset of jank that is capable of compiling itself. If your fitness test is compiler SLOC, there does indeed exist better designs. However, each of those will sacrifice performance and robustness in favor of
51.
▲
by
Jeaye
1y ago
> Don't try to provide backwards compatible subset of JVM APIs. Yeah, jank doesn't much with JVM APIs or the JVM at all. We have our own implementation of the compiler and runtime. It has similarities to Clojure's design,
52.
▲
by
Jeaye
1y ago
I hadn't heard of Carmack doing something similar, but I will take that company any day. Thanks for the kind words!
53.
▲
by
Jeaye
1y ago
Yep, this will be an important use case and will be officially supported. For the first alpha release this year, I'm focusing on Clojure devs, but support for existing native devs will come once things stabilize.
54.
▲
by
Jeaye
1y ago
Welcome home.
55.
▲
by
Jeaye
1y ago
I'm interested in exploring this as a potential dialect of jank. In the simplest approach, it's just a lexer change. However, there are implications around how macros will work, since macros generate s-expressions in Clojure, but
56.
▲
by
Jeaye
1y ago
> Might I ask the author of Jank whether he knows about Clapp and if so, how will this project try to avoid getting stagnated? I'm aware of Clasp and have spoken with drmeister about it in the early days of jank. Ultimately, jank an
57.
▲
by
Jeaye
1y ago
Rich has many great ideas and he founded Clojure. I respect him deeply. On typing, however, we do not agree entirely. For a practical example of a Clojure-like language with a completely static type system (with affine typing), see Carp. h
58.
▲
by
Jeaye
1y ago
Yes it should. Thanks for the keen eye and taking the time to point that out.
59.
▲
by
Jeaye
1y ago
> Are there Clojure libraries that don't use JVM(/JS/...)-specific stuff that works on any Clojure platform/dialect? Can such libraries be used on Jank out of the box? Correct. Any Clojure code which doesn't use
60.
▲
by
Jeaye
1y ago
I agree with you, but perhaps in my own way. Jumping into an arbitrary Clojure program can be tough, since the data shapes may not be defined anywhere. Hopefully the program uses spec or malli, but even then, unless they annotate every func
More ›