July 10, 2008 Re: DMD 1.032 and 2.016 releases | ||||
---|---|---|---|---|
| ||||
Posted in reply to Walter Bright | On Thu, 10 Jul 2008 02:56:29 +0400, Walter Bright <newshound1@digitalmars.com> wrote:
> Sean Kelly wrote:
>> Clearly this function isn't valid for all types if T can't be a static array type.
>
> Right.
>
> Andrei has also pointed out that this lack of consistency is a problem and should be fixed, but at the moment, that's the way it is.
The same goes for Tuple. Honestly, I don't see a reason why tuples can't be returned.
And since Tuple!(char,char,char,char) is no different from char[4],
I think that static arrays should also be allowed as a return type.
|
July 10, 2008 Re: DMD 1.032 and 2.016 releases | ||||
---|---|---|---|---|
| ||||
Posted in reply to Koroskin Denis | "Koroskin Denis" <2korden@gmail.com> wrote in message news:op.ud24ipehenyajd@proton.creatstudio.intranet... > On Thu, 10 Jul 2008 02:56:29 +0400, Walter Bright <newshound1@digitalmars.com> wrote: > >> Sean Kelly wrote: >>> Clearly this function isn't valid for all types if T can't be a static array type. >> >> Right. >> >> Andrei has also pointed out that this lack of consistency is a problem and should be fixed, but at the moment, that's the way it is. > > The same goes for Tuple. Honestly, I don't see a reason why tuples can't > be returned. > And since Tuple!(char,char,char,char) is no different from char[4], > I think that static arrays should also be allowed as a return type. The problem with returning static arrays is that they live on the stack. Function goes out of scope, bye bye array. Or are you suggesting that the static array be automatically .dup()ed? |
July 10, 2008 Re: DMD 1.032 and 2.016 releases | ||||
---|---|---|---|---|
| ||||
Posted in reply to Steven Schveighoffer | "Steven Schveighoffer" <schveiguy@yahoo.com> wrote in message news:g5555l$gji$1@digitalmars.com... > "Robert Fraser" wrote >> Steven Schveighoffer wrote: >>> No, Tango devs will be debugging it. Hell, let them do the work with a pre-release compiler. I'll volunteer to do it. If they determine it is a DMD bug, they give you a minimal case, and then you go back and fix it, or you determine that it can't be fixed for this release (with appropriate bugzilla entry logged). >> >> This is a bad idea. Why not just release it and let the whole community test it? After all, there is a "stable" version of the 1.x branch, the newer releases are all possibly breaking. > > Tango is 1.x only. It is the new releases in the stable branch (e.g. 1.032) that break Tango. When a new release in a stable branch breaks something, it's by definition, not stable :) > > For 2.x, I agree, because it's not a release anyways. It's just a pre-release until 2.x is blessed. > I think what Robert means is that on the DMD download page there's typically a less-than-most-recent version of D1 that's marked as the latest stable version of D1. |
July 10, 2008 Re: DMD 1.032 and 2.016 releases | ||||
---|---|---|---|---|
| ||||
Posted in reply to Nick Sabalausky | On Thu, 10 Jul 2008 22:58:19 +0400, Nick Sabalausky <a@a.a> wrote:
> "Koroskin Denis" <2korden@gmail.com> wrote in message
> news:op.ud24ipehenyajd@proton.creatstudio.intranet...
>> On Thu, 10 Jul 2008 02:56:29 +0400, Walter Bright
>> <newshound1@digitalmars.com> wrote:
>>
>>> Sean Kelly wrote:
>>>> Clearly this function isn't valid for all types if T can't be a static
>>>> array type.
>>>
>>> Right.
>>>
>>> Andrei has also pointed out that this lack of consistency is a problem
>>> and should be fixed, but at the moment, that's the way it is.
>>
>> The same goes for Tuple. Honestly, I don't see a reason why tuples can't
>> be returned.
>> And since Tuple!(char,char,char,char) is no different from char[4],
>> I think that static arrays should also be allowed as a return type.
>
> The problem with returning static arrays is that they live on the stack.
> Function goes out of scope, bye bye array. Or are you suggesting that the
> static array be automatically .dup()ed?
>
>
I expect that a bitwise copy returned. Just like with structs.
What's the difference between char[2] and struct { char[2]; }?
|
July 10, 2008 Re: DMD 1.032 and 2.016 releases | ||||
---|---|---|---|---|
| ||||
Posted in reply to Walter Bright | Walter Bright wrote:
> I have a LOT of experience doing this. It is not quick and easy with large masses of code that one is unfamiliar with.
I swear, sometimes it seems like my posts must not be showing up or something.
When this sort of trouble arises, what's wrong with just quickly cranking out a D1.0 release with ONLY regression fixes?
--bb
|
July 10, 2008 Re: DMD 1.032 and 2.016 releases | ||||
---|---|---|---|---|
| ||||
Posted in reply to Steven Schveighoffer | Steven Schveighoffer Wrote:
> "Robert Fraser" wrote
> > Steven Schveighoffer wrote:
> >> No, Tango devs will be debugging it. Hell, let them do the work with a pre-release compiler. I'll volunteer to do it. If they determine it is a DMD bug, they give you a minimal case, and then you go back and fix it, or you determine that it can't be fixed for this release (with appropriate bugzilla entry logged).
> >
> > This is a bad idea. Why not just release it and let the whole community test it? After all, there is a "stable" version of the 1.x branch, the newer releases are all possibly breaking.
>
> Tango is 1.x only. It is the new releases in the stable branch (e.g. 1.032) that break Tango. When a new release in a stable branch breaks something, it's by definition, not stable :)
>
> For 2.x, I agree, because it's not a release anyways. It's just a pre-release until 2.x is blessed.
>
> -Steve
That. It can be said that everything released is a "pre-release" until one of
them is stable enough to make it to the download page. This way,
everyone who is active can continue testing their projects & reporting
regressions, not only a few people considered special.
|
July 10, 2008 Re: DMD 1.032 and 2.016 releases | ||||
---|---|---|---|---|
| ||||
Posted in reply to Koroskin Denis | Koroskin Denis wrote:
> On Thu, 10 Jul 2008 22:58:19 +0400, Nick Sabalausky <a@a.a> wrote:
>
>> "Koroskin Denis" <2korden@gmail.com> wrote in message
>> news:op.ud24ipehenyajd@proton.creatstudio.intranet...
>>> On Thu, 10 Jul 2008 02:56:29 +0400, Walter Bright
>>> <newshound1@digitalmars.com> wrote:
>>>
>>>> Sean Kelly wrote:
>>>>> Clearly this function isn't valid for all types if T can't be a static
>>>>> array type.
>>>>
>>>> Right.
>>>>
>>>> Andrei has also pointed out that this lack of consistency is a problem
>>>> and should be fixed, but at the moment, that's the way it is.
>>>
>>> The same goes for Tuple. Honestly, I don't see a reason why tuples can't
>>> be returned.
>>> And since Tuple!(char,char,char,char) is no different from char[4],
>>> I think that static arrays should also be allowed as a return type.
>>
>> The problem with returning static arrays is that they live on the stack.
>> Function goes out of scope, bye bye array. Or are you suggesting that the
>> static array be automatically .dup()ed?
>>
>>
>
> I expect that a bitwise copy returned. Just like with structs.
> What's the difference between char[2] and struct { char[2]; }?
The former is passed (to a function) by reference, the latter by value. Having a type that's passed by ref, but return by val, seems inconsistent.
Wasn't there plans to make static arrays value types? is this already so?
Tomas
|
July 10, 2008 Re: DMD 1.032 and 2.016 releases | ||||
---|---|---|---|---|
| ||||
Posted in reply to Robert Fraser | "Robert Fraser" wrote
> Steven Schveighoffer Wrote:
>
>> "Robert Fraser" wrote
>> > Steven Schveighoffer wrote:
>> >> No, Tango devs will be debugging it. Hell, let them do the work with
>> >> a
>> >> pre-release compiler. I'll volunteer to do it. If they determine it
>> >> is
>> >> a DMD bug, they give you a minimal case, and then you go back and fix
>> >> it,
>> >> or you determine that it can't be fixed for this release (with
>> >> appropriate bugzilla entry logged).
>> >
>> > This is a bad idea. Why not just release it and let the whole community test it? After all, there is a "stable" version of the 1.x branch, the newer releases are all possibly breaking.
>>
>> Tango is 1.x only. It is the new releases in the stable branch (e.g.
>> 1.032)
>> that break Tango. When a new release in a stable branch breaks
>> something,
>> it's by definition, not stable :)
>>
>> For 2.x, I agree, because it's not a release anyways. It's just a pre-release until 2.x is blessed.
>>
>> -Steve
>
> That. It can be said that everything released is a "pre-release" until one
> of
> them is stable enough to make it to the download page. This way,
> everyone who is active can continue testing their projects & reporting
> regressions, not only a few people considered special.
OK, I didn't get what you were saying earlier. I thought you were saying that D 1.0 is the stable branch, not that there is a stable version of D1.0 on the download page. Sorry for the misunderstanding.
But regardless of that, I think Tango is special because it is a critical basis for many many projects. Here is what ends up happening:
1. Someone using tango finds a bug in DMD 1.x, files it
2. Walter releases code to fix the bug, but inadvertantly adds a bug that
makes it so tango cannot build
3. Walter fixes tango bug, and 1 month later, releases another version with
another bug that makes it so tango can't build
... rinse and repeat
10. Person who found original DMD bug still can't use DMD, because he is
relying on a good build of Tango, which requires the compiler that has the
bug in it.
Besides this annoyance, Tango can be looked at as a really good exercise for DMD. If Tango compiles, and Phobos compiles, then most likely DMD is stable enough to be useful for everyone. I can't see any down side to having Tango devs test a pre-release version of DMD. It should just be one of the screen tests that helps make DMD a better product, and helps make D less frustrating to those of us who rely on Tango.
-Steve
|
July 10, 2008 Re: DMD 1.032 and 2.016 releases | ||||
---|---|---|---|---|
| ||||
Posted in reply to Steven Schveighoffer | Steven Schveighoffer Wrote:
> "Robert Fraser" wrote
> > Steven Schveighoffer Wrote:
> >
> >> "Robert Fraser" wrote
> >> > Steven Schveighoffer wrote:
> >> >> No, Tango devs will be debugging it. Hell, let them do the work with
> >> >> a
> >> >> pre-release compiler. I'll volunteer to do it. If they determine it
> >> >> is
> >> >> a DMD bug, they give you a minimal case, and then you go back and fix
> >> >> it,
> >> >> or you determine that it can't be fixed for this release (with
> >> >> appropriate bugzilla entry logged).
> >> >
> >> > This is a bad idea. Why not just release it and let the whole community test it? After all, there is a "stable" version of the 1.x branch, the newer releases are all possibly breaking.
> >>
> >> Tango is 1.x only. It is the new releases in the stable branch (e.g.
> >> 1.032)
> >> that break Tango. When a new release in a stable branch breaks
> >> something,
> >> it's by definition, not stable :)
> >>
> >> For 2.x, I agree, because it's not a release anyways. It's just a pre-release until 2.x is blessed.
> >>
> >> -Steve
> >
> > That. It can be said that everything released is a "pre-release" until one
> > of
> > them is stable enough to make it to the download page. This way,
> > everyone who is active can continue testing their projects & reporting
> > regressions, not only a few people considered special.
>
> OK, I didn't get what you were saying earlier. I thought you were saying that D 1.0 is the stable branch, not that there is a stable version of D1.0 on the download page. Sorry for the misunderstanding.
>
> But regardless of that, I think Tango is special because it is a critical basis for many many projects. Here is what ends up happening:
>
> 1. Someone using tango finds a bug in DMD 1.x, files it
> 2. Walter releases code to fix the bug, but inadvertantly adds a bug that
> makes it so tango cannot build
> 3. Walter fixes tango bug, and 1 month later, releases another version with
> another bug that makes it so tango can't build
> ... rinse and repeat
> 10. Person who found original DMD bug still can't use DMD, because he is
> relying on a good build of Tango, which requires the compiler that has the
> bug in it.
>
> Besides this annoyance, Tango can be looked at as a really good exercise for DMD. If Tango compiles, and Phobos compiles, then most likely DMD is stable enough to be useful for everyone. I can't see any down side to having Tango devs test a pre-release version of DMD. It should just be one of the screen tests that helps make DMD a better product, and helps make D less frustrating to those of us who rely on Tango.
>
> -Steve
Bill Baxter already commented on this. Walter just needs to quickly release a version with only regression fixes (maybe only if those regressions are big enough to be blockers without simple work-arounds).
|
July 10, 2008 Re: DMD 1.032 and 2.016 releases | ||||
---|---|---|---|---|
| ||||
Posted in reply to Steven Schveighoffer | Steven Schveighoffer wrote:
> Besides this annoyance, Tango can be looked at as a really good exercise for DMD. If Tango compiles, and Phobos compiles, then most likely DMD is stable enough to be useful for everyone. I can't see any down side to having Tango devs test a pre-release version of DMD. It should just be one of the screen tests that helps make DMD a better product, and helps make D less frustrating to those of us who rely on Tango.
The down sides of such a devs-only pre-release are that
1) It deprives the majority of D users the opportunity to find bugs.
2) it deprives everyone not affected by the bugs from getting their hands on every new D release for about a week (while the selected devs work on testing the release, reporting results back to Walter, and then fixing any problems found). And since Phobos seems to be getting tested pretty well, that means basically Phobos users have to wait while things get fixed for Tango.
Ok, so maybe you say "fine -- make the pre-release public so that anyone interested can try it out". Ok, that would be great. But let's be realistic: Walter has proven quite reluctant to change anything about how he does D releases, despite repeated pleas to change to a different system. Whether it be adding a major/minor, stable/unstable, even/odd, or alpha/beta distinctions, or whatever. He has his system and he's sticking to it as far as I can tell. He's been using it basically since version 0.001, and the only change he's made in all that time is when 2.x was released and required a split.
So what can you do given that the release process itself isn't likely to change?
Answer: put out quick regression-fix releases as soon as possible.
I think Tango-breaking regressions like these are kind of like "breaking the build". When you break the build you don't just tell your co-workers, "oh well, I'll fix it the next time I have some code that needs checking in". You fix it ASAP. It becomes the *only* item on your TODO list until it is fixed.
--bb
|
Copyright © 1999-2021 by the D Language Foundation