We were particularly interested in learnability for this study, which CAN be assessed in a study with students.
HN user
mcoblenz
I just added a clarification to the README about this. The main issue is that the current implementation keeps track of roots with a shadow stack technique (https://llvm.org/docs/GarbageCollection.html#using-llvm-gcwr...), which is not thread-safe. It wasn't worth the engineering work for this particular study since the tasks didn't require more than one thread. A practical implementation, of course, would need to be thread-safe.
Rust does provide some help in its type system (via ownership), but it is not nearly as expressive as Obsidian's. Rust, AFAIK, does not support linearity (i.e. will not warn you when you accidentally lose an owning reference to an object). It also does not directly support typestate (although there are ways of shoehorning parts of that in, I believe).
Glad to see the interest — thanks! What we'd especially appreciate is if you'd participate in the experiment: http://obsidian-lang.com/experiment.html
There are some examples in the repository, e.g. https://github.com/mcoblenz/Obsidian/tree/master/resources/c...
Also see a draft paper: http://obsidian-lang.com/obsidian-oopsla-19-submitted.pdf