Jump to page: 1 26  
Page
Thread overview
Bounty for -minimal compiler flag
Feb 13, 2014
1100110
Feb 14, 2014
John
Feb 14, 2014
1100110
Feb 14, 2014
Daniel Murphy
Feb 14, 2014
1100110
Feb 14, 2014
1100110
Feb 14, 2014
Rel
Feb 14, 2014
Kagamin
Feb 16, 2014
Rory McGuire
Feb 14, 2014
Daniel Murphy
Feb 14, 2014
1100110
Feb 14, 2014
Daniel Murphy
Feb 14, 2014
1100110
Feb 14, 2014
Daniel Murphy
Feb 14, 2014
1100110
Feb 14, 2014
Daniel Murphy
Feb 14, 2014
Daniel Murphy
Feb 14, 2014
Jacob Carlborg
Feb 14, 2014
Jacob Carlborg
Feb 14, 2014
Jacob Carlborg
Feb 14, 2014
Jacob Carlborg
Feb 14, 2014
Adam D. Ruppe
Feb 15, 2014
Jakob Ovrum
Feb 16, 2014
Denis Koroskin
Feb 16, 2014
Denis Koroskin
Feb 16, 2014
Jacob Carlborg
Feb 16, 2014
Jacob Carlborg
Feb 17, 2014
Jacob Carlborg
Apr 26, 2014
Kagamin
Feb 14, 2014
Mike
Feb 15, 2014
Leandro Lucarella
Feb 14, 2014
Denis Koroskin
Feb 15, 2014
Daniel Murphy
Feb 15, 2014
1100110
Feb 15, 2014
Adam D. Ruppe
Feb 15, 2014
1100110
Feb 15, 2014
Adam D. Ruppe
Feb 15, 2014
1100110
Feb 15, 2014
Adam D. Ruppe
Feb 15, 2014
Jacob Carlborg
Feb 15, 2014
1100110
Feb 16, 2014
Elie Morisse
Feb 16, 2014
Paulo Pinto
Feb 16, 2014
1100110
Feb 17, 2014
Paulo Pinto
Feb 17, 2014
1100110
Feb 17, 2014
inout
Feb 17, 2014
Paulo Pinto
Feb 16, 2014
inout
Mar 10, 2014
Rel
February 13, 2014
I think it's about time I gave back to this wonderful community.

I'm offering a $50 bounty on this.
(Preferably Bitcoins, but I'll use bountysource if desired.)

rules:
Has to be called -minimal
Has to fulfill Walter's original post. (listed below)
Has to split the separate parts into different flags as well as -minimal(-nogc, -nomoduleinfo, etc. Naming is left to the implementer).


This seems to be a good idea and has lots of support from the community, would anyone like to chip in a few more bucks?

I haven't set the bounty yet, depends on if multiple people chip in.  I'll probably set it sometime tonight.

Let me know what y'all think, am I leaving anything out?
Thanks


On Tuesday, 11 February 2014 at 19:43:00 UTC, Walter Bright wrote:
> I've toyed with this idea for a while, and wondered what the interest there is in something like this.
>
> The idea is to be able to use a subset of D that does not require any of druntime or phobos - it can be linked merely with the C standard library. To that end, there'd be a compiler switch (-betterC) which would enforce the subset.
>
> (First off, I hate the name "better C", any suggestions?)
>
> The subset would disallow use of any features that rely on:
>
> 1. moduleinfo
> 2. exception handling
> 3. gc
> 4. Object
>
> I've used such a subset before when bringing D up on a new platform, as the new platform didn't have a working phobos.
>
> What do you think?

February 14, 2014
I haven't gone into the history, but the only thing to really object to is 'gc' surely. Isn't the rest of it fairly innocuous?

J


On Thursday, 13 February 2014 at 23:14:20 UTC, 1100110 wrote:
>> 1. moduleinfo
>> 2. exception handling
>> 3. gc
>> 4. Object
>>
February 14, 2014
On 2/14/14, 0:22, John wrote:
> I haven't gone into the history, but the only thing to really object to
> is 'gc' surely. Isn't the rest of it fairly innocuous?
>
> J
>
>
> On Thursday, 13 February 2014 at 23:14:20 UTC, 1100110 wrote:
>>> 1. moduleinfo
>>> 2. exception handling
>>> 3. gc
>>> 4. Object
>>>


Why object to gc? You can always simply not use it, and use only the flags you want.  If a library that you use uses it, you don't have to worry about it since it will work without the flags as well as with.

IMO this will help make it a lot easier to manage GC allocations if that is what you wish to do.
February 14, 2014
"1100110"  wrote in message news:tjgimnoqoflzrcrlwjws@forum.dlang.org...

> I'm offering a $50 bounty on this.
> (Preferably Bitcoins, but I'll use bountysource if desired.)

I'd say just put it on bountysource, because then there's more chance others will add to it.

>
> rules:
> Has to be called -minimal

Dealbreaker.  The description for the switch reads "prevents all use of features which rely on druntime" and therefore the only reasonable switch name is "-nodruntime" or a variation of that.

> Has to fulfill Walter's original post. (listed below)
> Has to split the separate parts into different flags as well as -minimal(-nogc, -nomoduleinfo, etc. Naming is left to the implementer).

Make a enhancement report on bugzilla with the details. 

February 14, 2014
On 2/14/14, 5:10, Daniel Murphy wrote:
> "1100110"  wrote in message news:tjgimnoqoflzrcrlwjws@forum.dlang.org...
>
>> I'm offering a $50 bounty on this.
>> (Preferably Bitcoins, but I'll use bountysource if desired.)
>
> I'd say just put it on bountysource, because then there's more chance
> others will add to it.
>
I thought that would be best, unfortunately.

>>
>> rules:
>> Has to be called -minimal
>
> Dealbreaker.  The description for the switch reads "prevents all use of
> features which rely on druntime" and therefore the only reasonable
> switch name is "-nodruntime" or a variation of that.
>
I don't think we'll ever please everyone here.  All I'm really trying to do by specifying the name is prevent some cutesy annoying name.

I'd be fine with the switch being name -nodruntime, and honestly I like that better.

>> Has to fulfill Walter's original post. (listed below)
>> Has to split the separate parts into different flags as well as
>> -minimal(-nogc, -nomoduleinfo, etc. Naming is left to the implementer).
>
> Make a enhancement report on bugzilla with the details.

I will as soon as I iron a few wrinkles.  I need to figure out if typeinfo should be a part of this as well.
February 14, 2014
On Friday, 14 February 2014 at 11:28:30 UTC, 1100110 wrote:
> I thought that would be best, unfortunately.
Bitcoins are nice, but bountysource is the way to go. It's both more official and easier to contribute to the bounty.

> I'd be fine with the switch being name -nodruntime, and honestly I like that better.
I like it too.


> I will as soon as I iron a few wrinkles.  I need to figure out if typeinfo should be a part of this as well.

Work on the details, take your time, no hurry. I'm in for chipping around 50$ too.
February 14, 2014
"1100110"  wrote in message news:ldkuku$1sgt$1@digitalmars.com...

> I don't think we'll ever please everyone here.  All I'm really trying to do by specifying the name is prevent some cutesy annoying name.

It's pretty hard to get a pull request in with a silly switch name, so I wouldn't worry too much about that.

> I'd be fine with the switch being name -nodruntime, and honestly I like that better.

Me too!

> >> Has to fulfill Walter's original post. (listed below)
> >> Has to split the separate parts into different flags as well as
> >> -minimal(-nogc, -nomoduleinfo, etc. Naming is left to the implementer).
> >
> > Make a enhancement report on bugzilla with the details.
>
> I will as soon as I iron a few wrinkles.  I need to figure out if typeinfo should be a part of this as well.

I strongly recommend putting only goals in the enhancement request, and avoiding implementation details (and especially syntax) whenever possible.

Eg Struct equality requires typeinfo, but and implementation that changed it to use templates instead would probably be fine.  The typeinfo part is irrelevant here, you just want to avoid having to link druntime in.

Specifying individual flags is also not recommended, because a better interface might emerge and then the issue of whether the ER is completed gets messy.  Instead saying "I want a way to disable just the GC" avoids this.

Finally, putting many things in one request discourages partial fixes, makes discussion harder to follow, and could get complicated with a bounty involved. (what if two people implement different parts etc)  It would be better (IMO) to split each atomic feature into its own ER and cross-link them, even if this means splitting the bounty across them. 

February 14, 2014
On 2/14/14, 5:45, Daniel Murphy wrote:
> "1100110"  wrote in message news:ldkuku$1sgt$1@digitalmars.com...
>
>> I don't think we'll ever please everyone here.  All I'm really trying
>> to do by specifying the name is prevent some cutesy annoying name.
>
> It's pretty hard to get a pull request in with a silly switch name, so I
> wouldn't worry too much about that.
>
>> I'd be fine with the switch being name -nodruntime, and honestly I
>> like that better.
>
> Me too!
>
>> >> Has to fulfill Walter's original post. (listed below)
>> >> Has to split the separate parts into different flags as well as
>> >> -minimal(-nogc, -nomoduleinfo, etc. Naming is left to the
>> implementer).
>> >
>> > Make a enhancement report on bugzilla with the details.
>>
>> I will as soon as I iron a few wrinkles.  I need to figure out if
>> typeinfo should be a part of this as well.
>
> I strongly recommend putting only goals in the enhancement request, and
> avoiding implementation details (and especially syntax) whenever possible.
>
> Eg Struct equality requires typeinfo, but and implementation that
> changed it to use templates instead would probably be fine.  The
> typeinfo part is irrelevant here, you just want to avoid having to link
> druntime in.
>
> Specifying individual flags is also not recommended, because a better
> interface might emerge and then the issue of whether the ER is completed
> gets messy.  Instead saying "I want a way to disable just the GC" avoids
> this.

Alright,
I want a way to disable the GC, and have the compiler verify that no GC allocations may occur.

I want a way to disable Exceptions, and have the compiler verify that no Exceptions may occur.

I want a way to disable linking either the standard library and the runtime, and be able to run a minimal D program without needing to stub anything out manually.


The idea can be boiled down to:
> The idea is to be able to use a subset of D that does not require any of druntime or phobos - it can be linked merely with the C standard library.


Can you name anything I'm missing?

>
> Finally, putting many things in one request discourages partial fixes,
> makes discussion harder to follow, and could get complicated with a
> bounty involved. (what if two people implement different parts etc)  It
> would be better (IMO) to split each atomic feature into its own ER and
> cross-link them, even if this means splitting the bounty across them.

Good point, I'll do that.
February 14, 2014
On 2/14/14, 5:42, Francesco Cattoglio wrote:
> On Friday, 14 February 2014 at 11:28:30 UTC, 1100110 wrote:
>> I thought that would be best, unfortunately.
> Bitcoins are nice, but bountysource is the way to go. It's both more
> official and easier to contribute to the bounty.

Meh, I just have a lot more spare Bitcoins than actual money at the moment.  I can do both though.

>> I'd be fine with the switch being name -nodruntime, and honestly I
>> like that better.
> I like it too.
>
>
>> I will as soon as I iron a few wrinkles.  I need to figure out if
>> typeinfo should be a part of this as well.
>
> Work on the details, take your time, no hurry. I'm in for chipping
> around 50$ too.


Ok.  I think It'd be best if we split this into two bounties for the moment.  Here are the two I think are most important.


1.  GC -- Give us a way to disable it, GC allocations will not be allowed, and the GC will not run.

2.  Runtime -- Give us a way to disable the stdlib and runtime completely, and be able to compile and link programs that do not depend on them.

Got any thoughts?
February 14, 2014
"1100110"  wrote in message news:ldl2pf$20b0$1@digitalmars.com...

> I want a way to disable the GC, and have the compiler verify that no GC allocations may occur.
>
> I want a way to disable Exceptions, and have the compiler verify that no Exceptions may occur.
>

Good, this is what I had in mind.

> I want a way to disable linking either the standard library and the runtime, and be able to run a minimal D program without needing to stub anything out manually.
>
> The idea can be boiled down to:
> > The idea is to be able to use a subset of D that does not require any of
> druntime or phobos - it can be linked merely with the C standard library.

Cool.

> Can you name anything I'm missing?

TLS, dynamic cast, profiling, static this/static ~this, assert, -cov, -profile, class == and synchronized all rely on druntime code.

Also, D classes will fail to link without Object.

Should `array.length = x` be an error or just unsafely set the length?

Should it be ABI-compatible with normal D?

If you don't have strong feelings about any of these they should still probably be listed. 

« First   ‹ Prev
1 2 3 4 5 6