NeoHermit
Joined 13 years ago
Joined 13 years ago
I just realized that you asked the question probably because of the LLVM-based JIT compiler for Dao. This JIT compiler actually does not deal with GC at all, it just compiles consecutive segments of VM instructions into functions that will be called by the VM. Only a subset of the total VM instructions are compilable this way. It was intended for programs with a significant amount of numeric computation.
The language is stable now in terms of features, there will be no more significant changes in the language in the forseeable future. However, the document on the website is a bit outdated, I will update it in the coming days.
As for the implementation, I cannot say for sure, but I believe it is sufficient stable now. My colleagues and I have been using Dao to develop commercial product prototype in the past half year, the only tricky problems we experienced had something to do with the wrapping of a game engine. All (no many actually) other problems are quite trivial. After solving the problems related to the wrapping, the product prototype has been working quite smoothly.
However, our use may not have covered all the features of Dao, so there could be some parts less stable than the parts we have been using. But since we are actually using Dao in real products, we are obviously obliged to make it as stable as possible:)
> B. Do the concurrent features allow shared memory parallelism?
Yes.
if( DaoMake::IsDir( "DaoJIT" ) ) modules.AddDirectory( "JIT", "DaoJIT" );
then it will be included in the building. After building, you can add "-j" option in the command line to turn on jit.However, this module has not been tested for some time. It could be broken. It depends on older versions of LLVM, which is unfortunately not available on my laptop, so I cannot verify it now.