News for hackers. Stuff that matters.
Re:Lilith: x86-64 OS written in Crystal by viraptor on Monday December 23, 2019 @02:21AM (#21862014)
Kotlin - it's on JVM which is a good thing for some and a bad thing for others. It's easier to distribute standalone crystal binary for example.

Swift - crystal throws exceptions, swift explodes...

Ocaml - the functional approach is not for everyone.

Rust - I like rust a lot. But sometimes I want to write something quick and I'm happy to sacrifice some memory and speed to not have to deal with the ownership issues.

Nim - the most comparable, I guess it's syntax preference at that point

Re:Lilith: x86-64 OS written in Crystal by ernst_klim on Monday December 23, 2019 @03:57AM (#21862324)
> Ocaml - the functional approach is not for everyone.

OCaml is pretty general purpose though, it has loops, objects, mutable state. libguestfs [1] and some other codebases (the compiler itself, btw) are written in a pretty imperative OCaml.

[1] https://github.com/libguestfs/libguestfs

Re:Lilith: x86-64 OS written in Crystal by Jenz on Monday December 23, 2019 @07:33AM (#21863222)
OCaml somewhat tries to be familiar for OOPs, but it _is_ first and foremost a functional language.

Personally, I am learning it now, and I think rather than it being a stepping stone between OOP and FP, it might as well be its own separate and hybrid paragdim; I find purer FP languages like Haskell much more intuitive than the mix of modules, objects, types and classes of OCaml.

Though do not get me wrong, OCaml is an amazing language. It just stands rather by itself.

Pardon my terrible english.

Re:Lilith: x86-64 OS written in Crystal by imhoguy on Monday December 23, 2019 @03:08AM (#21862174)
You can use Kotlin/Native [0] or just plain Kotlin over Java with GraalVM which produces compact binaries.

[0] https://kotlinlang.org/docs/reference/native-overview.html

Re:Lilith: x86-64 OS written in Crystal by vips7L on Monday December 23, 2019 @08:20AM (#21863408)
Kotlin/native's stdlib isn't feature complete. You have to use raw syscalls to do anything.