I’ve found Vala to be a rather pleasant language to work with and would love to have it added for use in codingame challenges. It transpiles into C as part of compilation, although
valac itself is capable of invoking C compiler.
Proposed compilation options:
--target-glib=auto --pkg gio-2.0 --pkg gee-0.8
--target-glib=auto- we don’t care about resulting binary to be ABI-compatible with anything but build machine, so might as well reduce meaningless warnings from C compiler.
--pkg gee-0.8- a large library of collections. While it’s not directly a part of vala or glib, it’s still a de-facto standard one (valadoc even lists it as a core library alongside glib and similar fundamental libraries).
Possible additional flags:
--Xcc=-O2- Vala relies very heavily on C compiler to do optimizations, so I’d suggest enabling what is considered a “reasonable” optimization level by most distros out there. Although, given that it’s not default, and CodinGame’s history with lack of optimization options I’m not overly hopeful here…
--pkg gio-2.0- allows to use
asyncmethods. Their usefulness is somewhat debatable in context of challenges, but they can be handy regardless.
Template codegen can be borrowed from C with minor changes:
- Drop includes
print()for output, it works just like
printfin raw C
I’m unfamiliar with inner workings of language assistant CodinGame uses, but it’s worth noting that there exists vala-language-server project that works rather well.