> hands off to two of its own IRs before writing WASM-GC by hand
So it's not "one pass" lol. Do you know what a pass is?
Not that it matters - this AI is claiming "one pass" as though that's a good thing, but it's usually not. One-pass compilers can't typecheck forward references.
Also, it's only "by hand" if you, the developer, writes it. In this case:
"The frontend — lexer, parser, semantic analysis (it’s called mkf) — hands off to two of its own IRs before writing WASM-GC by hand."
So those frontend tools do the writing, not the developer?
That's not "by hand". One might say "writes WASM-GC directly". But no that also doesn't happen, it goes through an IR first?
Personally I wouldn't put too much trust in a developer that even can't get their terminology correct. Well either that or I foobar'd my understanding of the writeup?
Chances are they aren't a technical person and didn't build it, so wouldn't have anything interesting to say anyways. Web compilers are dime-a-dozen and LLMs can easily produce them with no active guidance. Very much in the training data[1]. This looks like just another person posting something they spent all of two minutes prompting.
So, is there a reason that your link to the official playground is dramatically more underwhelming and lacking in features compared to the from-scratch-in-C Minikotlin compiler page? You claim that the submission is uninteresting work from a lone non-technical rando and then link to / implicitly endorse a "hello world" repo from the multi-billion dollar corporation that runs the whole thing?
The JetBrains team didn't feel like prompting for a Claude UI to go with their project they wrote by hand 8 years ago, I suppose.
Are you really that impressed with stock LLM-generated UI?
Note the JetBrains playground includes features that are actually useful for a code playground, letting you configure compiler version and flags, which is likely more relevant than a faux-IDE UI for the use cases people use playgrounds for. It also supports importing packages, while this doesn't. This doesn't seem like a human even attempted to use it for anything, otherwise they would have realised how lacking it is. Unfortunately it seems like people who prompt slop can't be bothered to dogfood it... or maybe pigfood it?
"From scratch in C" means literally nothing here. LLMs can output C too. It may or may not be safe, efficient C, but writing C that compiles is trivial. Prompting "write it in C" poses no greater difficulty than any other language.
The example program they give as a "specimen" doesn't compile unless you specify the generic type of the "lanes" variable explicitly. And the compiler doesn't tell you where the error is. But it does build and run once you change it to "listOf<Lane>".
(The program builds as-is in the Kotlin Playground, at least for the JVM platform; the other platforms don't seem to have kotlinx.coroutines available.)
It's on my todo list to support compiling dart code through the wasm bundle to wasm directly. Right now it's running the dart arm simulator on the web because it supports hot reload.
I'm wondering if there are any cool use-cases that motivate having the compiler itself run in wasm. I did it mostly for fun and besides building tooling for compiler developers themselves or IDEs, I can't come up with much.
There was one guy that wanted a sandboxed environment for agents as he couldn't find anything else. A few other people used the dart live project to build playgrounds for their own packages.
Who's the target audience for minikotlin? I'm just curious.
That's cool. I often write tiny blurbs of kotlin just to test out a simple algorithm. I often do this on kotlin playground because doing so inside a scratch file or test is somehow more cumbersome and slow. This ran and compiled something in 98ms on my smartphone, cool stuff.
Cool idea. I like the UI and that it compiles locally. But I don't really get what this is for.
I use Kotlin Playground sometimes, but it allows me to switch Kotlin versions and compile targets, which is useful to try out new features.
> hands off to two of its own IRs before writing WASM-GC by hand
So it's not "one pass" lol. Do you know what a pass is?
Not that it matters - this AI is claiming "one pass" as though that's a good thing, but it's usually not. One-pass compilers can't typecheck forward references.
"The frontend — lexer, parser, semantic analysis (it’s called mkf) — hands off to two of its own IRs before writing WASM-GC by hand."
So those frontend tools do the writing, not the developer?
That's not "by hand". One might say "writes WASM-GC directly". But no that also doesn't happen, it goes through an IR first?
Personally I wouldn't put too much trust in a developer that even can't get their terminology correct. Well either that or I foobar'd my understanding of the writeup?
Anyway, looks like an interesting project.
Is the expectation that people write kotlin in their browser? How do people work this into their development workflow? Is this just a neat demo?
[1] https://github.com/JetBrains/kotlin-playground
Note the JetBrains playground includes features that are actually useful for a code playground, letting you configure compiler version and flags, which is likely more relevant than a faux-IDE UI for the use cases people use playgrounds for. It also supports importing packages, while this doesn't. This doesn't seem like a human even attempted to use it for anything, otherwise they would have realised how lacking it is. Unfortunately it seems like people who prompt slop can't be bothered to dogfood it... or maybe pigfood it?
"From scratch in C" means literally nothing here. LLMs can output C too. It may or may not be safe, efficient C, but writing C that compiles is trivial. Prompting "write it in C" poses no greater difficulty than any other language.
Oh didn’t know that! What is the best for ”compiles to wasm in browser” featureset?
(The program builds as-is in the Kotlin Playground, at least for the JVM platform; the other platforms don't seem to have kotlinx.coroutines available.)
The official Kotlin playground uses WASM, for example (JVM drop down-> choose "WASM")
https://play.kotlinlang.org
I'd challenge the 'by hand' assertion though.
- repo: https://github.com/modulovalue/dart-live
- demo: https://modulovalue.com/dart-live/
It's on my todo list to support compiling dart code through the wasm bundle to wasm directly. Right now it's running the dart arm simulator on the web because it supports hot reload.
I'm wondering if there are any cool use-cases that motivate having the compiler itself run in wasm. I did it mostly for fun and besides building tooling for compiler developers themselves or IDEs, I can't come up with much.
There was one guy that wanted a sandboxed environment for agents as he couldn't find anything else. A few other people used the dart live project to build playgrounds for their own packages.
Who's the target audience for minikotlin? I'm just curious.
In any case, cool project, thanks for sharing!
also check out his similar work, https://miniswift.run/ which has the same issues.