top | item 6427498

Show HN: Solid, a scripting language with a tiny VM

63 points| chameco | 12 years ago |github.com

15 comments

order

zserge|12 years ago

Great job! I was looking for a small and simple embeddable language (smaller than Lua) for a long time. Solid looks very promising to me.

chameco|12 years ago

Thanks! Quite honestly, my primary reason for making it was that I didn't like the Lua object model and Python/Ruby/Guile are a bit inconvenient to embed.

theseoafs|12 years ago

Are there any performance benchmarks?

EDIT: The language looks pretty cool in general. I'm not a huge fan of the recursion syntax. In particular, the `this` keyword seems to just refer to the current function object, which is confusing since in other languages that usually refers to the object a method belongs to. Further, the choice of immutable lists as the default data structure is odd -- arrays would be much more performant (and are the usual choice for scripting languages anyway).

beagle3|12 years ago

Given that there is no array built in type, and the closest thing (list) is a lisp style linked list, I wouldn't expect it to be speedy in any non-trivial benchmark (or real-world use) that requires random access.

smilekzs|12 years ago

The core seems much more interesting than the Pawn language. I'd like to see more comparisons once this matures.

A few points:

1. I'd like to see the FFI implemented natively (i.e. by declaring in Solid and registering through C code/macro, instead of relying on object file parsing). Then it'll be extremely useful in a bare-metal microcontroller environment.

2. Namespacing is needed -- I don't really want `parse_xxx` or `ast_node` in my global namespace!

chameco|12 years ago

Yeah, the namespacing is somewhat poor, sorry about that. I'll get around to prefixing the names at some point.

helloTree|12 years ago

Just wanted to say, kudos! I think it is essential for a language to have a good C interface otherwise it will be insulated. However some more example would be nice. Furthermore I think you mean "infix" in your documentation and not "inline".

arthuredelstein|12 years ago

Very cool. I would love to see immutable, persistent data collections as offered in Clojure.

cldr|12 years ago

Awesome work. How big is the executable?

Also, what did you not like about the Lua object model?

chameco|12 years ago

Without debug symbols (the default Makefile includes them), the executable is 83KB (93KB with -g), less than half the size of Lua. The shared library is a bit larger, at 102KB.

Lua's whole table-metatable system always felt awkward to me, what with the magic names for operators. It's really not so bad, I just didn't see any reason to spend time learning something that felt awkward and archaic to me when I could make something that seemed a bit cleaner.