As a Vala developer I wouldn't suggest Vala for an interpreter. In an interpreter you're going to create many objects for ast, data types, possible intermediate objects, codegen objects and so on. In Vala itself I've personally measured that the major overhead is creating objects (that are simple GTypeInstance, not even GObject).
Vala is designed to work with gobjects, but gobjects aren't designed to be allocated fast.
So, for your project I'd still be using glib/gio for cross-platform stuff, like networking, string utils, unicode, data structures and so on, because they have a clean, consistent and convenient API, but I wouldn't create ast objects as gobjects/gtypeinstance.
In an interpreter you want fast allocation, that's the whole point.
My personal advice is: use vala if you want to build desktop applications, dbus services, gstreamer stuff or anything that touches the g* world, nothing else.
==
on strings in Vala results instrcmp
, it costs a little more. Then again, you'd have to do thestrcmp
in C anyway; it's just not trivially obvious when you read the code. – Laryssa