Skip to content

Instantly share code, notes, and snippets.

@scythe
Created March 30, 2020 21:59
Show Gist options
  • Save scythe/6c31c167efa7eb4dd070c090da37e2b3 to your computer and use it in GitHub Desktop.
Save scythe/6c31c167efa7eb4dd070c090da37e2b3 to your computer and use it in GitHub Desktop.
The anti-anti-Vala FAQ

The goal of this FAQ is to provide a humorous response to the inevitable question that comes up whenever people discuss a project that is written in Vala. Hopefully, it will save some time in the long run.

Why didn't you just use...

C#?

That was called Mono, and nobody liked it.

Objective-C?

That was called GNUstep, and nobody liked it.

Go?

CGo.

Java, Clojure, Kotlin?

We'd get even more complaints about the JVM.

Python, Ruby, Javascript, Elixir, Dart?

Users expect their UI to respond in the same year that they click on something.

Lisp, Lua, Racket, Erlang, OCaml, Haskell, Mercury?

Hahahahahahahahahahahaha. Ha. And also, ha.

Rust?

Although this is a highly controversial decision, we have decided to allow mortals to contribute to our codebase.

C++?

Inability to compete with the fantastic developer experience in KDE.

C?

GObject was primarily used in C until downstream developers threatened us all with the guillotine.

D?

We're afraid that the language will change direction once again.

Zig, Nim, Crystal, Swift?

I suppose it would be nice to tap into Nim's extensive library ecosystem.

J, K?

3 : '0 = (<:2x^y)&|@(_2+*:)^:(y-2) 4x' " 0

A "language-agnostic" API?

Why didn't you just say "machine learning"? Ooh, here's an idea. Let's use a blockchain!

@gavr123456789
Copy link

  • C#, Java, Clojure, Kotlin, Python, Ruby, Javascript, Elixir, Dart, have GC ang big runtime.

  • D - it has a nogc, but its Std is tied to GC(even string) so if you want to use nogc, then go invent Std.

  • Swift - Has an ARC like Vala, but You can't use it outside of Apple, because all libraries and development tools are proprietary.

  • Zig - Actually a good replacement for C, but it is C, it is still quite low-level, and does not manage memory in any way. The language literally does not know about the heap, and to allocate memory there, you need to provide your own alocator.

  • Crystal - GC. Support for multithreading(not competition) has been added recently. It is still not supported on Windows. Also, Event Loop and channel fibers are not supported under Windows.

  • Kotlin native is slower and made only for IOS support (you are not allowed to distribute VMS on IOS)
    AOT Dart just like Kotlin native, both languages lose all benchmarks to their JIT versions.

  • Go - Vala has all the go multithreading features (managed blocking work stealing parallelizm, MPMC channels )

Scala and, to a lesser extent, Rust are overcomplicated.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment