The first version of the language definitely suffered from this. (The first compiler was source-to-source targeting C++, and integrating it with anything external was always a pain.) This version is actually more like an EDSL: the compiler targets Terra (<a href="http:&#x2F;&#x2F;terralang.org&#x2F;" rel="nofollow">http:&#x2F;&#x2F;terralang.org&#x2F;</a>), which does codegen to LLVM. The compiler is still completely under my control, so in theory I could make it &quot;pure&quot; and not allow the language to do anything unsafe. In practice, I&#x27;ve found that it&#x27;s useful to be able to do things like call C functions---that way, you don&#x27;t have to rewrite 100% of every code, just the parts that need to run in parallel.<p>In my experience, porting a ~5k line application is usually a week or two worth of work, and usually most of that is spent trying to understand what the original code is doing, rather than writing a lot of new code. Regent code is usually fairly compact compared to the sorts of things we benchmark against (C++ and MPI codes).