Re: Phobos, minimal runtime, -betterC compatibility documentation

2018-06-06 Thread aberba via Digitalmars-d

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.




Re: Phobos, minimal runtime, -betterC compatibility documentation

2018-06-05 Thread Mike Franklin via Digitalmars-d
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.


Phobos, minimal runtime, -betterC compatibility documentation

2018-06-05 Thread Arun Chandrasekaran via Digitalmars-d
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