www.digitalmars.com         C & C++   DMDScript  

digitalmars.D - Phobos, minimal runtime, -betterC compatibility documentation

reply Arun Chandrasekaran <aruncxy gmail.com> writes:
I'm more interested in no/minimal runtime[1] than -betterC for my 
use cases.

I think it will be good to have the document mention if the 
function is supported without the druntime and/or with -betterC. 
This documentation can be the module level or function level. Is 
this possible and/or is it worth it?

I understand that using druntime function with -betterC will make 
the compiler throw error. But it will be good to know it up front 
via doc if a function uses druntime or not.

[1] https://dlang.org/changelog/2.079.0.html#minimal_runtime
Jun 05 2018
parent reply Mike Franklin <slavo5150 yahoo.com> writes:
On Wednesday, 6 June 2018 at 01:34:13 UTC, Arun Chandrasekaran 
wrote:
 I'm more interested in no/minimal runtime[1] than -betterC for 
 my use cases.

 I think it will be good to have the document mention if the 
 function is supported without the druntime and/or with 
 -betterC. This documentation can be the module level or 
 function level. Is this possible and/or is it worth it?

 I understand that using druntime function with -betterC will 
 make the compiler throw error. But it will be good to know it 
 up front via doc if a function uses druntime or not.

 [1] https://dlang.org/changelog/2.079.0.html#minimal_runtime
What we actually need is to have the runtime itself to be well-documented. In doing so, one would be able to see which features are implemented in the runtime and which features aren't, so what is and isn't supported in a "minimal runtime" would be self-evident. In lew of that, however, I'll refer you to documentation "object", "core", and "rt" here: https://dlang.org/phobos/index.html. Another good resource is https://wiki.dlang.org/Runtime_Hooks; it's outdated, but still relevant. Please also understand that one of the primary use cases for the "minimal runtime" changes in 2.079 is to allow users to port the runtime to a new platform incrementally in a pay-as-you-go fashion. For that, you'll need to learn the details of the runtime anyway. Prior to the changes in 2.079, you had to implement a large part of the runtime just to get a build, and most of that code would have never even been called from your program. It was ridiculous and a major barrier to entry. With 2.079, you can now implement just what you need incrementally, and that will make it much easier to learn the runtime. What I'm trying to say, is the "minimal runtime" approach to using D is for those who wish to become runtime hackers, and are willing to study and experiment in order to learn how to take control of the runtime for themselves. The reason the phrase "minimal runtime" is often used over "no runtime" is because it is up to you to decide which features of D to implement or not implement. That being said, understand that -betterC does not link in the runtime, so anything not supported by -betterC will also not be supported by a bare runtime. Therefore the documenation at https://dlang.org/spec/betterc.html is still relevant to the "minimal runtime" approach. There are differences. For example, I think -betterC forwards asserts to the C library, while a bare runtime would not. But, the differences are few. You're also welcome to ask questions. I'm the one primarily responsible for those "minimal runtime" changes, and I'd be happy to help you if I can. Mike P.S. You're probably not going to have much success using Phobos in a "minimal runtime" scenario. I'm exploring a way to get around that at https://github.com/JinShil/utiliD.
Jun 05 2018
parent aberba <karabutaworld gmail.com> writes:
On Wednesday, 6 June 2018 at 04:04:25 UTC, Mike Franklin wrote:
 On Wednesday, 6 June 2018 at 01:34:13 UTC, Arun Chandrasekaran 
 wrote:

 P.S. You're probably not going to have much success using 
 Phobos in a "minimal runtime" scenario.  I'm exploring a way to 
 get around that at https://github.com/JinShil/utiliD.
Nice.
Jun 06 2018