Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Closure was written in 2008. This rationale document is interesting because it promotes VMs as the way of the future. It is interesting to note that since 2008 the industry has gravitated much more back toward compiled systems.


What gives you the impression of the industry gravitating more towards compiled systems?

I see JS/TS going stronger than ever, Java and .NET still very strong and growing, Python again stronger than ever, WASM on the rise.

What's on the "compiled" side, apart from probably Rust making headlines on HN? What are the major products or services written in Rust? What are the unicorns with Rust secret sauce?

C/C++ is still strong, but is it expanding? Is Go even in the "compiled" camp?


These are all growing and strong. My point was that new languages that we see coming out are compiled. Nim and Zig are examples. There's even languages that are a direct answer to "compiled Clojure" such as Carp and Janet, and most directly, Jank.

When was the last time you saw an interpreted language as a new language come out in the last few years?


Maybe there’s more to be fixed with compiled languages than VM ones, currently.


The only thing that comes to mind is JITs everywhere and maybe that dotnet is trying to do more stand-alone compiling stuff. Other than that, completely agree.


What about GraalVM, which sports native AOT compilation?


In what way is go not in the compiled camp.


I personally put it in the "compiled" camp, but I've seen understandable arguments that Go has such a thick runtime (GC, IO/fiber scheduling, CSP, reflection), it's almost Java


Nowadays, we have both. Use GraalVM if you care about smaller memory footprint and faster startup time.

For the immediate, REPL-based development flow, a VM is a great host platform.


its a host platform, but a great one? Given that the platform lacks a lot of native features long used by Lisp systems. For example one can work interactively, dump a memory image, copy and restart it later, just continuing the the work. The JVM does not support that. The native object system is not tailored towards incremental change, class loaders are a pain, ...


Big fan of Clojure for sure. But looking at all the cool projects built on WASM, I'm not sure about the bare metal vs VM direction. There are compilers, interpreters, embedded support, interesting sandboxes (RLbox), webGPU. There are use cases from browsers to embedded, and it's a portable assembly language so you can still write with most higher level languages if you like the syntax and take advantage of all these environments to run in. The "browser as OS" idea has been around for a couple of decades now and it keeps moving closer to the bare metal.


There is already clojurescript, not much use for clojure to WASM in the browser. I guess there are or will be JVMs for WASM at the very least. And Clojurescript running on Nodejs or Deno won't be that much of a difference.


The industry has gravitated to giving up and putting everything in containers because most languages’ version and package management was so terrible.


With Clojure I like using uberjars + systemd .service files instead of setting up Docker


One of the few who retained his sanity during the Dockernetes military takeover of the devops world.


Has it though? Erlang is still strong and Elixir is on the rise for some time.


The typical industry dev has never heard of them, never mind used them.


But then the typical industry dev works with Java or C# (both VM-based) or maybe Python or PHP (interpreters.)


The typical industry dev usually asks “What’s wrong with Java”


You mean the industry that is now hyping WebAssembly as if it was the very first of its kind, and re-inventing Java/.NET application servers?


With the cloud, Kubernetes, Docker and all the other stuff, I don't think the OS/language-specific VM dichotomy still makes sense.

"Memory and other resource management" Can people really claim they manage memory and resources with a low-level language when their 30-line YML configured cluster reallocates whole machines at a time?


Clojure compiles to jar files, that run on JVM. So, it’s both compiling and JIT in the REPL. In a weird way.


How do you define the difference? It seems it's difficult to draw a line with modern systems.


VMs still probably a better fit for dynamic languages. But modern Java doesn't really need a VM.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: