February 15, 2007
Walter Bright wrote:
> BCS wrote:
>> Walter Bright wrote:
>>> BCS wrote:
>>>
>>>> Um, Why?
>>>>
>>>> the following statement types are not allowed:
>>>>     * labelled break and continue statements
>>>
>>>
>>> Because it's hard to do, and I'm lazy :-(
>>
>> Oh. Fine by me.
>>
>> Is that the same as: "later... maybe"?
> 
> Yes <g>
> 
> I did get goto's to work, though. Can't live without that!

Aren't labeled breaks and continues basically glorified gotos? Or is the hard part figuring out which instruction to jump to? :)
February 15, 2007
"Walter Bright" <newshound@digitalmars.com> wrote in message news:er28ht$1cch$2@digitalmars.com...
> Compile time function execution! (Please discuss in the corresponding thread in digitalmars.D)
>
> http://www.digitalmars.com/d/changelog.html
>
> http://ftp.digitalmars.com/dmd.1.006.zip

Great stuff, Walter!

By the way, is it just a freaky coincidence that this made it in *exactly one year* after the first (afaik) discussion about it?

http://www.digitalmars.com/d/archives/digitalmars/D/announce/2676.html

L.


February 15, 2007
Walter Bright wrote:
> kris wrote:
>> This release increases the resultant executable size of a trivial HelloWorld program, by around 12KB. What happened?
> 
> I don't know. Which platform?

Win32.  We're still investigating, but building the same code with DMD 1.0 gives us a HelloWorld EXE of 90,652 bytes.  With 1.005 the same code gives us a HelloWorld EXE of 113,180 bytes.  I have yet to try 1.006 but reports indicate that the size is roughly the same as 1.005.  I think no one simply noticed this until 1.006 experimentation began today.  If I had to hazard a guess, I'd say most of the size change is probably a result of the TypeInfo changes post-1.0, but it will take a while to dig through object files to sort all this out.


Sean
February 15, 2007
Sean Kelly wrote:
> Walter Bright wrote:
> 
>> kris wrote:
>>
>>> This release increases the resultant executable size of a trivial HelloWorld program, by around 12KB. What happened?
>>
>>
>> I don't know. Which platform?
> 
> 
> Win32.  We're still investigating, but building the same code with DMD 1.0 gives us a HelloWorld EXE of 90,652 bytes.  With 1.005 the same code gives us a HelloWorld EXE of 113,180 bytes.  I have yet to try 1.006 but reports indicate that the size is roughly the same as 1.005.  I think no one simply noticed this until 1.006 experimentation began today.  If I had to hazard a guess, I'd say most of the size change is probably a result of the TypeInfo changes post-1.0, but it will take a while to dig through object files to sort all this out.
> 
> 
> Sean

with 1006, the result is 114,716. That's 26% larger than 1.0 ?
February 15, 2007
kris wrote:
> Sean Kelly wrote:
>> Walter Bright wrote:
>>
>>> kris wrote:
>>>
>>>> This release increases the resultant executable size of a trivial HelloWorld program, by around 12KB. What happened?
>>>
>>>
>>> I don't know. Which platform?
>>
>>
>> Win32.  We're still investigating, but building the same code with DMD 1.0 gives us a HelloWorld EXE of 90,652 bytes.  With 1.005 the same code gives us a HelloWorld EXE of 113,180 bytes.  I have yet to try 1.006 but reports indicate that the size is roughly the same as 1.005.  I think no one simply noticed this until 1.006 experimentation began today.  If I had to hazard a guess, I'd say most of the size change is probably a result of the TypeInfo changes post-1.0, but it will take a while to dig through object files to sort all this out.
>>
>>
>> Sean
> 
> with 1006, the result is 114,716. That's 26% larger than 1.0 ?

Turns out we have been using different flags.  My numbers above are with "-release -O -inline" set.  Without these flags the 1.0 EXE is 92,188 bytes.  This will be a more useful comparison vs. Kris' number above.


Sean
February 16, 2007
kris wrote:
> with 1006, the result is 114,716. That's 26% larger than 1.0 ?

That's likely due to the typeinfo's necessary to implement the type aware gc.
February 16, 2007
Walter Bright wrote:
> Compile time function execution!

Best D release ever!

But the way you are numbering DMD versions is really annoying :-(

"1.006" does not express how much changed. The last software I saw that used decimal versions was Netscape Navigator, and before that I can't even remember. Most software companies I know deprecated this scheme of version numbering for a good reason.

3 or 4-piece version numbers are largely used today, and they express a lot better the life history of a software.

1.000 should have been called 1.0.0;

From 1.001 to 1.004, they should have been numbered 1.0.1 until 1.0.4;

Now, 1.005 and 1.006, both introduced sensible changes to the language spec, so 1.1.0 and 1.2.0 for them.

This also allows one to refer to things like "version 1.1 of D spec". Today, we have to say "the D spec as it was between 1.005 and 1.006"...

Also, version numbers are not decimal numbers. 1.10 is greater than 1.9. No need for leading zeros.
February 16, 2007
WALTER!!! YOU ROCK!!!

Walter Bright wrote:
> Compile time function execution! (Please discuss in the corresponding
> thread in digitalmars.D)
> 
> http://www.digitalmars.com/d/changelog.html
> 
> http://ftp.digitalmars.com/dmd.1.006.zip
February 16, 2007
Miles wrote:
> Walter Bright wrote:
>> Compile time function execution!
> 
> Best D release ever!
> 
> But the way you are numbering DMD versions is really annoying :-(
> 
> "1.006" does not express how much changed. The last software I saw that
> used decimal versions was Netscape Navigator, and before that I can't
> even remember. Most software companies I know deprecated this scheme of
> version numbering for a good reason.
> 
> 3 or 4-piece version numbers are largely used today, and they express a
> lot better the life history of a software.
> 
> 1.000 should have been called 1.0.0;
> 
> From 1.001 to 1.004, they should have been numbered 1.0.1 until 1.0.4;
> 
> Now, 1.005 and 1.006, both introduced sensible changes to the language
> spec, so 1.1.0 and 1.2.0 for them.
> 
> This also allows one to refer to things like "version 1.1 of D spec".
> Today, we have to say "the D spec as it was between 1.005 and 1.006"...
> 
> Also, version numbers are not decimal numbers. 1.10 is greater than 1.9.
> No need for leading zeros.

This seems a sensible change. Version.Major.Minor is very common and very intuitive. Version for code incompatible changes, Major for new additions to the spec, minor for bug fixes. You can keep your current numbering scheme for minor ticks. Thus 1.0.001, 1.0.002, etc. As Miles suggests, you could even retroactively bump the new "major" version to reflect the new features (mixins and compile time functions).
February 16, 2007
On Thu, 15 Feb 2007 10:25:01 -0800
Walter Bright <newshound@digitalmars.com> wrote:

> Compile time function execution! (Please discuss in the corresponding thread in digitalmars.D)
> 
> http://www.digitalmars.com/d/changelog.html
> 
> http://ftp.digitalmars.com/dmd.1.006.zip

I'm impressed. Last releases are the best I've ever seen.

As i understand function at compile time are interpreted (by some kind of VM)?

Now, when i think about it, and about modular design of D (and compiler), I think it wasn't so hard to implement. Any way, great job!

-- 
Witold Baryluk