Re: Crystal

2013-02-17 Thread Denis Shelomovskij

17.02.2013 10:28, Ary Borenszweig пишет:

Hello everyone :-)

...

(you might remember me: I'm the author of Descent)


A Hero is here! Let me kowtow to you, a Descent Creator!


... Let's save this world's energy.


It's pleasantly to see this point of view at efficiency.


But... do we really have to specify const pure safe nothrow and whatnot?
Can't the compiler be smarter? I'm sure there must be a better way. Most
new programming languages look like older ones. Newness comes slowly...

One time I asked in this newsgroup if it was possible to have an auto
keyword for function/method arguments. And... why not make all
functions/methods be templates on the type of its arguments?

I think nobody liked this idea. I said Ruby is like this: you never
specify types in method definitions.

But Ruby is not efficient. Ruby is a dynamic language. D is
compiled, so it's faster. Don't make the mistake of comparing a
dynamic language with a static/systems programming language. This were
some of the answers I got.

I started thinking about this idea: a compiled language that looked like
a dynamic language. Is it possible?


Looks like it is, by what is the reason?

I'd like to specify function attributes explicitly because I do want to 
get a compilation error when I e.g. use non-safe stuff in safe function 
instead of a just compiler silently changing the function (and all 
functions which use it) to unsafe. I also don't use type inference 
everywhere because sometimes I do want to see exact types (yes, IDE 
problem) and sometimes I just don't want a type to be accidentally 
changed because of some function signature change as in the worst case 
the code will still compile but will work incorrect.


Now about argument types. I do not understand the purpose of dynamic 
typing at all and consider such languages too dangerous to use in real 
projects. You proposal is a bit better as it will give CT errors 
(instead of RT in dynamic typing case) but still bad as the code can 
accidentally compile and work incorrect. Also this looks as a step back 
as your proposal is like making from a function something like C's 
preprocessor macro. And I remember how somebody defended C's macros and 
told you can do it with macro, then he gave his code where he made a 
fatal mistake by passing two parameters to a macro in a wrong order. And 
that code accidentally compiled. Same thing can happen with every high 
templated code where it is hard to predict every possible argument 
combination.


I also have seen a lot of mistakes of any types in D templated code so I 
consider such code almost as dangerous as pointer arithmetic and you 
proposal to make everything a template looks as insane.



...

Thanks for your comments,
Ary

P.S.: bin/crystal -e 'a = 0; 10.times { |i| a += i }; puts a' -O3 -ll


Sorry for such cruel comment, I it is just my opinion.

--
Денис В. Шеломовский
Denis V. Shelomovskij


Re: Crystal

2013-02-17 Thread bearophile

Ary Borenszweig:

I started thinking about this idea: a compiled language that 
looked like a dynamic language. Is it possible?


Of course it's possible, I given my help in the development of 
ShedSkin:

http://code.google.com/p/shedskin/

Its compilation times are significant and they keep growing 
quickly as the amount of compiled code grows.


Bye,
bearophile


Re: Crystal

2013-02-17 Thread Russel Winder
Why is this thread on the announce mailing list instead of the
discussion list?

-- 
Russel.
=
Dr Russel Winder  t: +44 20 7585 2200   voip: sip:russel.win...@ekiga.net
41 Buckmaster Roadm: +44 7770 465 077   xmpp: rus...@winder.org.uk
London SW11 1EN, UK   w: www.russel.org.uk  skype: russel_winder


signature.asc
Description: This is a digitally signed message part


Re: Crystal

2013-02-17 Thread Jacob Carlborg

On 2013-02-17 08:46, Paulo Pinto wrote:


Have you looked into Ruby Motion or Mirah as well?


Or MacRuby. It's free (as in free beer) and open source, not something 
that Ruby Motion is.


--
/Jacob Carlborg


Re: Crystal

2013-02-17 Thread Paulo Pinto

Am 17.02.2013 12:57, schrieb Jacob Carlborg:

On 2013-02-17 08:46, Paulo Pinto wrote:


Have you looked into Ruby Motion or Mirah as well?


Or MacRuby. It's free (as in free beer) and open source, not something
that Ruby Motion is.



My problem with MacRuby and Ruby Motion is they are tied to Mac OS X.

Crystal's usage of LLVM is actually quite positive in that regard.

--
Paulo


Re: Crystal

2013-02-17 Thread Jacob Carlborg

On 2013-02-17 14:21, Paulo Pinto wrote:


My problem with MacRuby and Ruby Motion is they are tied to Mac OS X.


Yeah, I agree. But developing for iOS is pretty tied to Mac OS X anyway.

--
/Jacob Carlborg


Re: Crystal

2013-02-17 Thread Ary Borenszweig


On 2/17/13 6:29 AM, Denis Shelomovskij wrote:
 I'd like to specify function attributes explicitly because I do want to
 get a compilation error when I e.g. use non-safe stuff in safe function
 instead of a just compiler silently changing the function (and all
 functions which use it) to unsafe.=

It's something I didn't have time to write in that wiki page, but you 
can restrict the types of a function.


def foo(x : Int)
  1
end

foo Hello # Gives a compile-time error

This is similar to what you can do with D templates. You can also 
restrict an overload an use another one unrestricted and it will choose 
the correct one:


def foo(x : Int)
  1
end

def foo(x)
  2
end

foo Hello # Chooses the second one

So theoretically you can type everything you want. We might also support 
typing a variable in order to disallow it to change to another type (I 
think this is what is done in the Julia language).



 Now about argument types. I do not understand the purpose of dynamic
 typing at all and consider such languages too dangerous to use in real
 projects.

In the place I work we've written several web applications and programs 
in Ruby and they work just fine. We writes lots of test units to make 
sure everything works (you don't have another option, really, with 
dynamic languages).


 Sorry for such cruel comment, I it is just my opinion.

It's not cruel at all. I really appreciate your comments.




Re: Crystal

2013-02-17 Thread Ary Borenszweig

On 2/17/13 9:14 AM, Jacob Carlborg wrote:

I find it very interesting. But actually I'm going to agree with Denis,
mostly. If I was going to use Crystal I would probably use a lot more
static typing than it's probably made for.

I quite often miss static typing in Ruby. Often there are functions that
are supposed to only work with a given type, I don't see why I shouldn't
explicitly write that type out then.


As I replied to Denis, you can specify type restrictions in functions 
and methods.


def foo(x : Int)
  1
end

foo Hello # Gives a compile error

It works similar to overloaded templates: you don't specify the type of 
the function, but which types you can give to it. In the case of Int, of 
course it will always just accept an Int. But you can specify for example


def foo(x : Enumerable)
end

And there's a special restriction, self, that will only match for the 
owner of the method. This is used for example in the Comparable module:


https://github.com/manastech/crystal/blob/master/std/comparable.cr



A couple of questions:

* Executable code at class level, is that supported? If that's the case,
when is it run? Example:

class Foo
   puts asd
end


I thought it was supported but it's not. It would be very easy to 
support it, but it would execute at run time, as if you had put it 
before the class declaration.


However, there's another thing I didn't mention in that wiki page and 
that is macros. You can write;


---
macro define_something
  def something; 1; end
end

define_something() # This defines the something method

something() # And this invokes it
---

Again, this is different from Ruby.

Macros are executed at compile time. You can pass arguments to them, and 
their type will be the AST node of the expression you give them. They 
must return a String (for now), and it will be mixed in the program 
(later we'll support returning AST nodes directly).


We use macros for attr_accessor and the like:

https://github.com/manastech/crystal/blob/master/std/object.cr

Just note that this is an experimental feature, and for now only 
variables, strings and symbols are allowed for macros.


Macros can execute arbitrary code and have access to what you defined in 
your program. That means they can open a file, read/write a database and 
so on. I believe this can be very powerful for metaprogramming.


(this is inspired mainly from Lisp)



* With a statically typed languages you quite soon get the need for
interfaces, abstract classes and similar. How is this handled?


If you don't need them in Ruby I don't see why would you need them in 
Crystal.


The only use of interfaces is to satisfy the compiler. But since Crystal 
is mostly duck-typed interfaces have no use.


Another use is probably performance, and we are still considering how to 
fit everything together. We are writing code in Crystal and see where 
it's slow, and think of the most little change that's not a burden for 
the programmer that can help speed up compilation times.




* Is Ruby code supposed to be able to run of out the box in Crystal?
That is can I take arbitrary Ruby code and compile it with Crystal and
expect it to work. If that's the case, what's currently supported and
what's not supported?


You probably won't have eval, define_method and so on. You will be able 
to do some of those things with macros, but it's not the same.


Most Ruby code should run out of the box, unless something is missing 
from the standard library.


For example I tried running this code:

https://gist.github.com/havenwood/4724778

(removing the Time.now lines, because we don't have that yet)

and it just worked. And it was much faster than all of the other languages.

Our idea was to make a language as similar as Ruby, not with the 
intention of compiling Ruby. But accidentally (or not :-P) it is 
happening, slowly.


Thanks for your comments and questions!



Re: Crystal

2013-02-17 Thread Ary Borenszweig

Have you looked into Ruby Motion or Mirah as well?


Ruby Motion is not open source, so we couldn't (or didn't want) to take 
a look at that.


Mirah compiles for the JVM, and we want to compile to native code. We 
try to escape from virtual machines...


Re: Crystal

2013-02-17 Thread Paulo Pinto

Am 17.02.2013 17:41, schrieb Ary Borenszweig:

Have you looked into Ruby Motion or Mirah as well?


Ruby Motion is not open source, so we couldn't (or didn't want) to take
a look at that.



I know, the question was more in the value proposal kind of way.


Mirah compiles for the JVM, and we want to compile to native code. We
try to escape from virtual machines...


Currently yes, but there have been discussions to get it to compile to 
native code via LLVM.


Re: Crystal

2013-02-17 Thread Jacob Carlborg

On 2013-02-17 17:34, Ary Borenszweig wrote:


As I replied to Denis, you can specify type restrictions in functions
and methods.

def foo(x : Int)
   1
end

foo Hello # Gives a compile error

It works similar to overloaded templates: you don't specify the type of
the function, but which types you can give to it. In the case of Int, of
course it will always just accept an Int. But you can specify for example

def foo(x : Enumerable)
end


Yeah, I saw there's explicit static typing.


And there's a special restriction, self, that will only match for the
owner of the method. This is used for example in the Comparable module:

https://github.com/manastech/crystal/blob/master/std/comparable.cr


So in that case self would evaluate, at compile time, to whatever 
Comparable is mixed in to?



I thought it was supported but it's not. It would be very easy to
support it, but it would execute at run time, as if you had put it
before the class declaration.


That code will be executed as soon as the file has been loaded using 
require?



However, there's another thing I didn't mention in that wiki page and
that is macros. You can write;

---
macro define_something
   def something; 1; end
end

define_something() # This defines the something method

something() # And this invokes it
---


Yeah, I saw that.


Again, this is different from Ruby.

Macros are executed at compile time. You can pass arguments to them, and
their type will be the AST node of the expression you give them. They
must return a String (for now), and it will be mixed in the program
(later we'll support returning AST nodes directly).

We use macros for attr_accessor and the like:

https://github.com/manastech/crystal/blob/master/std/object.cr

Just note that this is an experimental feature, and for now only
variables, strings and symbols are allowed for macros.

Macros can execute arbitrary code and have access to what you defined in
your program. That means they can open a file, read/write a database and
so on. I believe this can be very powerful for metaprogramming.

(this is inspired mainly from Lisp)


This looks cool.


If you don't need them in Ruby I don't see why would you need them in
Crystal.


You don't need them in Ruby because it's dynamically typed.


The only use of interfaces is to satisfy the compiler. But since Crystal
is mostly duck-typed interfaces have no use.


But it does support explicit static typing. It doesn't look easy to 
restrict a method for a given type for something like an interface. So 
what will happen is one use duck typing and it will basically be the 
same as templates without constrains.



Another use is probably performance, and we are still considering how to
fit everything together. We are writing code in Crystal and see where
it's slow, and think of the most little change that's not a burden for
the programmer that can help speed up compilation times.



* Is Ruby code supposed to be able to run of out the box in Crystal?
That is can I take arbitrary Ruby code and compile it with Crystal and
expect it to work. If that's the case, what's currently supported and
what's not supported?


You probably won't have eval, define_method and so on. You will be able
to do some of those things with macros, but it's not the same.

Most Ruby code should run out of the box, unless something is missing
from the standard library.

For example I tried running this code:

https://gist.github.com/havenwood/4724778

(removing the Time.now lines, because we don't have that yet)

and it just worked. And it was much faster than all of the other languages.

Our idea was to make a language as similar as Ruby, not with the
intention of compiling Ruby. But accidentally (or not :-P) it is
happening, slowly.


I see.

--
/Jacob Carlborg


Re: Crystal

2013-02-17 Thread JN

On Sunday, 17 February 2013 at 12:14:40 UTC, Jacob Carlborg wrote:


Except from what others already have mentioned someone created 
a language with a Python like syntax written in D. But I think 
that had explicit types.



http://delight.sourceforge.net/


Re: Crystal

2013-02-17 Thread Ary Borenszweig

On 2/17/13 4:09 PM, Jacob Carlborg wrote:

On 2013-02-17 17:34, Ary Borenszweig wrote:


As I replied to Denis, you can specify type restrictions in functions
and methods.

def foo(x : Int)
   1
end

foo Hello # Gives a compile error

It works similar to overloaded templates: you don't specify the type of
the function, but which types you can give to it. In the case of Int, of
course it will always just accept an Int. But you can specify for example

def foo(x : Enumerable)
end


Yeah, I saw there's explicit static typing.


And there's a special restriction, self, that will only match for the
owner of the method. This is used for example in the Comparable module:

https://github.com/manastech/crystal/blob/master/std/comparable.cr


So in that case self would evaluate, at compile time, to whatever
Comparable is mixed in to?


Yes.




I thought it was supported but it's not. It would be very easy to
support it, but it would execute at run time, as if you had put it
before the class declaration.


That code will be executed as soon as the file has been loaded using
require?


Since it's not yet implemented, it could be like that, or it can be that 
it is evaluated when you execute the program (but not at compile time).


Re: Crystal

2013-02-17 Thread Jacob Carlborg

On 2013-02-17 21:22, Ary Borenszweig wrote:


Since it's not yet implemented, it could be like that, or it can be that
it is evaluated when you execute the program (but not at compile time).


But if I just but code that the top level of a file, when at runtime is 
that executed?


--
/Jacob Carlborg


Re: Crystal

2013-02-17 Thread Jacob Carlborg

On 2013-02-17 20:50, JN wrote:


http://delight.sourceforge.net/


There we go, thanks.

--
/Jacob Carlborg


Re: [OT] Region-Based Storage Management: ParaSailing without a (Garbage) Chute

2013-02-17 Thread Tucker Taft

On Sunday, 10 February 2013 at 09:50:30 UTC, Paulo Pinto wrote:

Hi,

some might find this interesting.

A presentation about the ParaSail, system programming language 
based on Ada. ...


ParaSail is not really based on Ada, but it does try to 
incorporate good ideas from a number of languages, including Ada, 
ML/OCaml, Modula/Oberon, D ;-), etc.


For more information on the design and implementation of ParaSail 
see:


  http://parasail-programming-language.blogspot.com

-Tuck

P.S. the e-mail address is a fake.  If you want to reach me best 
is to post a question to the blog or the ParaSail Google Group:


   http://groups.google.com/group/parasail-programming-language

-T


Re: [OT] Region-Based Storage Management: ParaSailing without a (Garbage) Chute

2013-02-17 Thread bearophile

Tucker Taft:

ParaSail is not really based on Ada, but it does try to 
incorporate good ideas from a number of languages, including 
Ada, ML/OCaml, Modula/Oberon, D ;-), etc.


Wow Tucker Taft himself :-) You seem quite expert, despite the 
very friendly attitude shown in this talk.


As seen in a talk slide ParaSail throws away *lot* of stuff, to 
fulfill its main purpose of allowing lot of parallelism in an 
imperative language.


While D is more a kitchen sink language, that takes lot of 
stuff from C, C++, Java and more. So D seems much more complex 
than ParaSail. On the other hand most things present in D are 
useful/handy.



I don't know how well D will work on CPUs with 50-200 cores. The 
current simple GC has problems even on a single core, so on 100 
cores I think it will become a mess. The Rust memory model seems 
quite more fit for that:

http://i.imgur.com/16rxWXY.png


The ParaSail idea of the need to specify what variables to use 
from outer scope is an idea that I like since few years, and I'd 
like a form of it in D (with an optional @outer() or something 
similar) because in the years I have seen many problems caused by 
using by mistake identifiers from outer scopes.


Bye,
bearophile


Re: D 2.062 release

2013-02-17 Thread Brad Roberts
On 2/17/2013 5:07 PM, Andrej Mitrovic wrote:
 On 2/18/13, Walter Bright newshou...@digitalmars.com wrote:
 http://digitalmars.com/d/download.html

 The dlang.org site isn't updated yet, but the downloads are there.

 
 The zip download is broken:
 http://downloads.dlang.org.s3-website-us-east-1.amazonaws.com/releases/2013/dmd.2.062.zip
 

It's there now (along with the other variations of the packaging).


Re: D 2.062 release

2013-02-17 Thread Mike Parker

On Monday, 18 February 2013 at 01:02:43 UTC, Walter Bright wrote:

http://digitalmars.com/d/download.html

The dlang.org site isn't updated yet, but the downloads are 
there.


Love the new release! Thanks to everyone who contributed. But I 
just want to throw in my 2 cents about the new changelog format. 
It's impossible now to tell at a glance what the major 
changes/fixes are. Clicking through four links to find them is 
bad enough, but the layout and color scheme of the Bugzilla 
search results makes it even more time consuming. I know it's 
easier from a maintenance perspective, but I've lost the 
motivation to even look at the changelog now. And it's something 
I really used to look forward to with each release.




Re: D 2.062 release

2013-02-17 Thread Bill Baxter
The new change log also seems inaccessible from mobile. (At least it seems
to freak out chrome on android).

--bb
Sent from my Android.
On Feb 17, 2013 5:25 PM, Brad Roberts bra...@puremagic.com wrote:

 On 2/17/2013 5:07 PM, Andrej Mitrovic wrote:
  On 2/18/13, Walter Bright newshou...@digitalmars.com wrote:
  http://digitalmars.com/d/download.html
 
  The dlang.org site isn't updated yet, but the downloads are there.
 
 
  The zip download is broken:
 
 http://downloads.dlang.org.s3-website-us-east-1.amazonaws.com/releases/2013/dmd.2.062.zip
 

 It's there now (along with the other variations of the packaging).



Re: D 2.062 release

2013-02-17 Thread Steven Schveighoffer

On Sun, 17 Feb 2013 20:31:45 -0500, Mike Parker aldac...@gmail.com wrote:


On Monday, 18 February 2013 at 01:02:43 UTC, Walter Bright wrote:

http://digitalmars.com/d/download.html

The dlang.org site isn't updated yet, but the downloads are there.


Love the new release! Thanks to everyone who contributed. But I just  
want to throw in my 2 cents about the new changelog format. It's  
impossible now to tell at a glance what the major changes/fixes are.  
Clicking through four links to find them is bad enough, but the layout  
and color scheme of the Bugzilla search results makes it even more time  
consuming. I know it's easier from a maintenance perspective, but I've  
lost the motivation to even look at the changelog now. And it's  
something I really used to look forward to with each release.




+1

-Steve


Re: D 2.062 release

2013-02-17 Thread Walter Bright

On 2/17/2013 5:31 PM, Mike Parker wrote:

Love the new release! Thanks to everyone who contributed. But I just want to
throw in my 2 cents about the new changelog format. It's impossible now to tell
at a glance what the major changes/fixes are.


It wasn't before, either. It was a list sorted by bugzilla number - no other 
sort - and it's the same now.



Clicking through four links to
find them is bad enough, but the layout and color scheme of the Bugzilla search
results makes it even more time consuming. I know it's easier from a maintenance
perspective, but I've lost the motivation to even look at the changelog now. And
it's something I really used to look forward to with each release.


I'm sorry, I'm baffled at this. The ordering and the information is exactly the 
same - a list of issue numbers and the issue title.




Re: D 2.062 release

2013-02-17 Thread Walter Bright

On 2/17/2013 5:40 PM, Bill Baxter wrote:

The new change log also seems inaccessible from mobile. (At least it seems to
freak out chrome on android).


The changelog.html uses the same template as the rest of the dconf.org site.



Re: D 2.062 release

2013-02-17 Thread Andrej Mitrovic
On 2/18/13, Mike Parker aldac...@gmail.com wrote:
 But I just want to throw in my 2 cents about the new changelog format.

Not just the changelog, but this release announcement too. Two
sentences, without any information about what is being released, who
is involved, and a short few sentences on what's new. Very cold, and a
complete marketing failure.

For the next release I propose that we get more involved in the release process:

- We make an agreement on when exactly a release is made, without
wondering when Walter might end up doing it himself.

- We maintain a list of open pull requests which have to be merged
before a release is made (we can even use DWiki for this). We could
also maintain a list of bugs which should be the focus of each
upcoming release.

- Next to the buzilla queries in the changelog we should write a list
of changes in some informative manner (split up categorically e.g.
bugfixes, new syntax, new phobos features, etc), what's new, how some
bug may or may not affect its users and how they can work around any
code breakage.

- We split up the changelog so it isn't one gigantic page.

- We write an announcement post to NG that's short but informative,
making sure we give a thanks to our users, reporters, maintainers and
bug fixers (I'm not saying list all of their names but just a general
thank you note).

- We make sure the announcement can be seen on the dlang.org front page!

For some examples of how other language maintainers make announcements, see:

http://mail.python.org/pipermail/python-announce-list/2012-September/009630.html
http://dev.perl.org/perl5/news/2012/perl-5.16.0.html
https://groups.google.com/forum/#!topic/scala-announce/cRNUEBmcZYw


Re: D 2.062 release

2013-02-17 Thread Steven Schveighoffer

On Sun, 17 Feb 2013 20:55:21 -0500, Walter Bright
newshou...@digitalmars.com wrote:


On 2/17/2013 5:31 PM, Mike Parker wrote:
Love the new release! Thanks to everyone who contributed. But I just  
want to
throw in my 2 cents about the new changelog format. It's impossible now  
to tell

at a glance what the major changes/fixes are.


It wasn't before, either. It was a list sorted by bugzilla number - no  
other sort - and it's the same now.



Clicking through four links to
find them is bad enough, but the layout and color scheme of the  
Bugzilla search
results makes it even more time consuming. I know it's easier from a  
maintenance
perspective, but I've lost the motivation to even look at the changelog  
now. And

it's something I really used to look forward to with each release.


I'm sorry, I'm baffled at this. The ordering and the information is  
exactly the same - a list of issue numbers and the issue title.




Let me give you some examples of new features

std.array.replace compile error (string and immutable string)
There's no Duration.max
Document extern properly
etc.

Now, I'll sure love the new replace compile error, the missing  
Duration.max, and the need to document extern as much as the next guy, but  
can we get some better descriptions? ;)


Some of the descriptions work well for a changelog, but many of them  
don't.  Even ones that are clear that they were a new feature are worded  
awkwardly.


For example, the new feature std.random.uniform!Enum should return random  
enum member should really be std.random.uniform!Enum now returns a  
random enum member instead of a random integer


The 'bugs fixed' report can be a link to bugzilla, but being able to read  
it inline on the changelog would be a good improvement.  These are going  
to be static lists, there is no need to query them from a DB every time.


-Steve


Re: D 2.062 release

2013-02-17 Thread bearophile

Walter Bright:


I'm sorry, I'm baffled at this.


I too prefer the precedent style of the changelog.
Sometimes the reality is more complex than the frame you try to 
shove it in :-) Reality of human brains is complex.


Bye,
bearophile


Re: D 2.062 release

2013-02-17 Thread bearophile

Walter Bright:


I'm sorry, I'm baffled at this.


I read bugzilla entries all day long, but I think as a release 
page information that page gives too much information (the Sev 
	Pri 	OS 	Assignee 	Status 	Resolution columns) that's just 
distracting noise. Sometimes giving less is more.


Bye,
bearophile


Re: D 2.062 release

2013-02-17 Thread Andrei Alexandrescu

On 2/17/13 9:10 PM, Andrej Mitrovic wrote:

On 2/18/13, Mike Parkeraldac...@gmail.com  wrote:

But I just want to throw in my 2 cents about the new changelog format.


Not just the changelog, but this release announcement too. Two
sentences, without any information about what is being released, who
is involved, and a short few sentences on what's new. Very cold, and a
complete marketing failure.


I agree we need to improve on this. One way to achieve that, seeing as 
marketing is not Walter's focus, is to denote a release czar who has 
that particular task around releases. Andrej, would you want to try that 
role?


Andrei



Re: D 2.062 release

2013-02-17 Thread Andrei Alexandrescu

On 2/17/13 8:02 PM, Walter Bright wrote:

http://digitalmars.com/d/download.html

The dlang.org site isn't updated yet, but the downloads are there.


I've updated the website, too. Enjoy!

Andrei


Re: D 2.062 release

2013-02-17 Thread Walter Bright

On 2/17/2013 6:11 PM, Steven Schveighoffer wrote:

Let me give you some examples of new features

std.array.replace compile error (string and immutable string)
There's no Duration.max
Document extern properly
etc.


Compare the earlier changelogs with the bugzilla entries.

It's EXACTLY THE SAME TEXT.

EXACTLY.

I understand many people do not like the change to the changelog - but I ask for 
a reason that make sense. I keep hearing that the text is different, but that is 
simply not so. It's the same exact information. Even the categories are the same.


Also, anyone can go in and change the bugzilla issue titles to make them more 
readable.




Re: D 2.062 release

2013-02-17 Thread Steven Schveighoffer
On Sun, 17 Feb 2013 21:44:18 -0500, Walter Bright  
newshou...@digitalmars.com wrote:



On 2/17/2013 6:11 PM, Steven Schveighoffer wrote:

Let me give you some examples of new features

std.array.replace compile error (string and immutable string)
There's no Duration.max
Document extern properly
etc.


Compare the earlier changelogs with the bugzilla entries.

It's EXACTLY THE SAME TEXT.

EXACTLY.


No.  We have quite a few messages that were not bug reports in prior  
releases.  These messages have no corresponding bugzilla entry.  These  
were truly useful descriptions.  The bug reports were few, and yes, there  
were a few instances like the ones I gave (I saw relax inout rules which  
is terrible as a description).


for example:

* std.​array.​insert has been deprecated. Please use  
std.​array.​insertInPlace instead.
* Major overhaul of std.​regex module's implementation. Breaking change in  
std.​regex.​replace with delegate, use Captures!string instead of  
RegexMatch!string as delegate parameter.


The latest versions have almost none of those useful descriptions.  They  
are almost exclusively of the cryptic  
you-have-to-click-on-me-to-understand-what-I-mean type.


Even if there are past examples of poor descriptions for the changelog,  
that is not not an excuse to make them all bugzilla reports.


A good first step would be to examine the bugzilla reports that will be  
listed as new features (should be easy since it's a report that's  
already being used by the web site), and change the descriptions to real  
useful enhancement descriptions before the release.  But I think the  
release needs a hard copy of these descriptions.


I understand many people do not like the change to the changelog - but I  
ask for a reason that make sense. I keep hearing that the text is  
different, but that is simply not so. It's the same exact information.  
Even the categories are the same.


I did a search for the above two examples in bugzilla, and I found  
nothing.  Clearly, this is not the exact same information.




Also, anyone can go in and change the bugzilla issue titles to make them  
more readable.


That actually is not a good thing...  Anyone can maliciously affect the  
changlog, or alter the changelog at some later point because they wanted  
to 'reopen' a bug.


-Steve


Re: D 2.062 release

2013-02-17 Thread Walter Bright

On 2/17/2013 7:36 PM, Steven Schveighoffer wrote:

On Sun, 17 Feb 2013 21:44:18 -0500, Walter Bright newshou...@digitalmars.com
wrote:


On 2/17/2013 6:11 PM, Steven Schveighoffer wrote:

Let me give you some examples of new features

std.array.replace compile error (string and immutable string)
There's no Duration.max
Document extern properly
etc.


Compare the earlier changelogs with the bugzilla entries.

It's EXACTLY THE SAME TEXT.

EXACTLY.


No.  We have quite a few messages that were not bug reports in prior
releases.  These messages have no corresponding bugzilla entry.  These were
truly useful descriptions.  The bug reports were few, and yes, there were a few
instances like the ones I gave (I saw relax inout rules which is terrible as a
description).

for example:

* std.​array.​insert has been deprecated. Please use std.​array.​insertInPlace
instead.
* Major overhaul of std.​regex module's implementation. Breaking change in std.​
regex.​replace with delegate, use Captures!string instead of RegexMatch!string
as delegate parameter.

The latest versions have almost none of those useful descriptions.  They are
almost exclusively of the cryptic
you-have-to-click-on-me-to-understand-what-I-mean type.


All that's necessary is to edit the title description. I've done that on a few 
of them.




Even if there are past examples of poor descriptions for the changelog, that is
not not an excuse to make them all bugzilla reports.


It is no more or less effort to fix the bugzilla titles than it is to edit the 
changelog.




A good first step would be to examine the bugzilla reports that will be listed
as new features (should be easy since it's a report that's already being used
by the web site), and change the descriptions to real useful enhancement
descriptions before the release.  But I think the release needs a hard copy of
these descriptions.


I understand many people do not like the change to the changelog - but I ask
for a reason that make sense. I keep hearing that the text is different, but
that is simply not so. It's the same exact information. Even the categories
are the same.


I did a search for the above two examples in bugzilla, and I found nothing.
Clearly, this is not the exact same information.


With the new system, all changes should have a bugzilla entry for them. With the 
old, there were occasional vacuous statements in the changelog with no links to 
any discussion or just what it was.


Look at the changelogs that list an issue number. All of them have the exact 
same text as the corresponding bugzilla title. I know they're the same because:


1. people requested that they be the same
2. I created them using cut  paste

With bugzilla entries for each item in the changelog, you have:

1. a title
2. discussion
3. link to the pull request that shows the code that changed to implement it


Also, anyone can go in and change the bugzilla issue titles to make them more
readable.


That actually is not a good thing...  Anyone can maliciously affect the
changlog, or alter the changelog at some later point because they wanted to
'reopen' a bug.


I know that there is the potential for malicious behavior, but thankfully we 
haven't seen any of that. If we do, we'll have to restrict write access to 
bugzilla. That'll be a sad day.



If someone wants to step up and take charge of doing a better job with the 
changelog, I'm all for it. The old way was NOT a better job. It was usually left 
to me (and Jonathan) to try to cobble something together. When I was the only 
committer, I'd edit the changelog as things got changed. With the larger number 
of committers today, this got overlooked. The result was incomplete, inaccurate, 
and a lot of belated hey, you left out these changes after the release.




Re: D 2.062 release

2013-02-17 Thread Steven Schveighoffer
On Sun, 17 Feb 2013 22:54:54 -0500, Walter Bright  
newshou...@digitalmars.com wrote:



On 2/17/2013 7:36 PM, Steven Schveighoffer wrote:
On Sun, 17 Feb 2013 21:44:18 -0500, Walter Bright  
newshou...@digitalmars.com

wrote:


On 2/17/2013 6:11 PM, Steven Schveighoffer wrote:

Let me give you some examples of new features

std.array.replace compile error (string and immutable string)
There's no Duration.max
Document extern properly
etc.


Compare the earlier changelogs with the bugzilla entries.

It's EXACTLY THE SAME TEXT.

EXACTLY.


No.  We have quite a few messages that were not bug reports in prior
releases.  These messages have no corresponding bugzilla entry.  These  
were
truly useful descriptions.  The bug reports were few, and yes, there  
were a few
instances like the ones I gave (I saw relax inout rules which is  
terrible as a

description).

for example:

* std.​array.​insert has been deprecated. Please use  
std.​array.​insertInPlace

instead.
* Major overhaul of std.​regex module's implementation. Breaking change  
in std.​
regex.​replace with delegate, use Captures!string instead of  
RegexMatch!string

as delegate parameter.

The latest versions have almost none of those useful descriptions.   
They are

almost exclusively of the cryptic
you-have-to-click-on-me-to-understand-what-I-mean type.


All that's necessary is to edit the title description. I've done that on  
a few of them.


Sure, so we need someone to do that.  But a changelog that is  
*potentially* informative is not actually informative now.  The previous  
changelogs were informative.


Even if there are past examples of poor descriptions for the changelog,  
that is

not not an excuse to make them all bugzilla reports.


It is no more or less effort to fix the bugzilla titles than it is to  
edit the changelog.


Who edited the changelog before?  Can that person or people edit the  
bugzilla entries?


I understand many people do not like the change to the changelog - but  
I ask
for a reason that make sense. I keep hearing that the text is  
different, but
that is simply not so. It's the same exact information. Even the  
categories

are the same.


I did a search for the above two examples in bugzilla, and I found  
nothing.

Clearly, this is not the exact same information.


With the new system, all changes should have a bugzilla entry for them.  
With the old, there were occasional vacuous statements in the changelog  
with no links to any discussion or just what it was.


I found the statements in the changelog not requiring extra research.   
Yes, it is important to have background for the reasoning of a change.  I  
agree that the statements should have any referenced bugzilla reports  
included.  But if you are not interested in the background for why a  
change was made, or the discussion that resulted in the change, or the  
original concern that led to the change, it is tedious to have to sift  
through that information to get to the conclusion.  Most changes can be  
summarized in one sentence for the casual observer.


In the past, I could scan the changelog, look for interesting changes, and  
the ones I was more interested in, I could drill down into.


A bug is a bug, and saying we fixed this bug, here was the original  
description: xxx is fine.  But new/changed features should have a full  
explanation and, if necessary, examples right in the description.


Look at the changelogs that list an issue number. All of them have the  
exact same text as the corresponding bugzilla title.


Right, and for bugs, that is fine.  For bugs where the bugzilla  
description completely describes the change, that is fine.  For feature  
enhancements like std.array.replace compile error (string and immutable  
string), I can't determine anything from that, you might as well have  
just said Bug 1234.



With bugzilla entries for each item in the changelog, you have:

1. a title
2. discussion
3. link to the pull request that shows the code that changed to  
implement it


I don't disagree bug links should be in the changelog, nor do I really  
fundamentally disagree that replacing the changelog with a bugzilla query  
is a valid changelog.  What I disagree with though is the position that  
the previous changelog entries that were hand-written were no more  
informative than the current changelog.


Also, anyone can go in and change the bugzilla issue titles to make  
them more

readable.


That actually is not a good thing...  Anyone can maliciously affect the
changlog, or alter the changelog at some later point because they  
wanted to

'reopen' a bug.


I know that there is the potential for malicious behavior, but  
thankfully we haven't seen any of that. If we do, we'll have to restrict  
write access to bugzilla. That'll be a sad day.


It doesn't have to be deliberately malicious behavior.  People think bug  
reports are bug reports, I've seen several cases where bug reports are  
re-opened with an issue that is 

Re: D 2.062 release

2013-02-17 Thread Walter Bright

On 2/17/2013 9:37 PM, Steven Schveighoffer wrote:

I propose that when you post the beta on the mailing list, you also post the
reports of the fixed bugs and enhancements.  Then people can edit the
descriptions before the release.  Then I think after the release, the
descriptions should be locked, and the bugs cannot be reopened.


The changelog is up on github, anyone can create a pull request for it. I invite 
you to.




Re: D 2.062 release

2013-02-17 Thread Nick Sabalausky
On Sun, 17 Feb 2013 18:44:18 -0800
Walter Bright newshou...@digitalmars.com wrote:

 On 2/17/2013 6:11 PM, Steven Schveighoffer wrote:
  Let me give you some examples of new features
 
  std.array.replace compile error (string and immutable string)
  There's no Duration.max
  Document extern properly
  etc.
 
 Compare the earlier changelogs with the bugzilla entries.
 
 It's EXACTLY THE SAME TEXT.
 
 EXACTLY.
 

No it isn't.

First of all, it's now split across four separate pages. Five if you
count the page that doesn't actually contain any real information
besides the four links.

Secondly, the new format contains loads of superfluous data. Did the
old changelog page dedicate over 1/3 of the page to rows and rows
and rows of nor P2 All No Owner RESO FIXE, none of wehich belongs in
a changelog? No it didn't. Definitely NOT the exact same text.

Third, the old changelog's formatting was overall jsut far more
readable.

Fourth, as people said, the wording in the old changelog was much more
appropriate for a changelog. Yea, people can update the titles of the
zilla entries: Thus making them *very strangely* worded for archived
bug reports. But does that actually happen? No (And I'm unconviunced
that it even should). Did changelog-appropriate wording happen with
the old changelog? Yes.

DO you really think that so many people would be so annoyed with the
new format if there *weren't* real problems with it?



Re: D 2.062 release

2013-02-17 Thread Nick Sabalausky
On Sun, 17 Feb 2013 17:56:20 -0800
Walter Bright newshou...@digitalmars.com wrote:

 On 2/17/2013 5:40 PM, Bill Baxter wrote:
  The new change log also seems inaccessible from mobile. (At least
  it seems to freak out chrome on android).
 
 The changelog.html uses the same template as the rest of the
 dconf.org site.
 

!-- Really? Not to be an ass, but how the *(^ is that fact going to
help him read the changelog on his mobile when the changelog info
*isn't on that page*? --

Erm, I mean, he's talking about the bugzilla-hosted pages with the
actual changelog information.



Re: D 2.062 release

2013-02-17 Thread Nick Sabalausky
On Sun, 17 Feb 2013 21:30:27 -0500
Andrei Alexandrescu seewebsiteforem...@erdani.org wrote:

 On 2/17/13 8:02 PM, Walter Bright wrote:
  http://digitalmars.com/d/download.html
 
  The dlang.org site isn't updated yet, but the downloads are there.
 
 I've updated the website, too. Enjoy!
 

I'm happy that http://dlang.org/changelog.html; no longer shows a link
for a yet-to-be-released version of DMD (no sarcasm intended), but the
release date listed for 2.062 is wrong.


Re: D 2.062 release

2013-02-17 Thread Walter Bright

On 2/17/2013 10:18 PM, Nick Sabalausky wrote:

Walter Bright newshou...@digitalmars.com wrote:


On 2/17/2013 6:11 PM, Steven Schveighoffer wrote:
Compare the earlier changelogs with the bugzilla entries.

It's EXACTLY THE SAME TEXT.

EXACTLY.



No it isn't.


Since I (and Jonathan) wrote the changelog, I can attest that I cut  pasted it 
character for character out of the bugzilla titles, and received no comments or 
complaints about it. I did it that way because people on the n.g. asked me to do 
it that way.



DO you really think that so many people would be so annoyed with the
new format if there *weren't* real problems with it?


I was far more annoyed at the very inaccurate  incomplete changelogs caused by 
it being edited by hand.


Obviously, the formatting of the changelog is important to several people. I 
seriously invite you to issue pull requests for it - it's all here:


https://github.com/D-Programming-Language/d-programming-language.org


Re: D 2.062 release

2013-02-17 Thread dnewbie

On Monday, 18 February 2013 at 01:02:43 UTC, Walter Bright wrote:

http://digitalmars.com/d/download.html

The dlang.org site isn't updated yet, but the downloads are 
there.


Thank you Walter Bright. I appreciate your work.



Re: D 2.062 release

2013-02-17 Thread Walter Bright

On 2/17/2013 10:27 PM, Nick Sabalausky wrote:

I'm happy that http://dlang.org/changelog.html; no longer shows a link
for a yet-to-be-released version of DMD (no sarcasm intended), but the
release date listed for 2.062 is wrong.


Probably because the site was generated from the master branch rather than the 
2.062 branch (which has the correct date).




Re: D 2.062 release

2013-02-17 Thread Walter Bright

On 2/17/2013 5:40 PM, Bill Baxter wrote:

The new change log also seems inaccessible from mobile. (At least it seems to
freak out chrome on android).


I tried it on my ipod with Safari. Both changelog.html and bugzilla render fine, 
though it helps to turn the ipod sideways to get 'landscape' mode.




Re: D 2.062 release

2013-02-17 Thread Jonathan M Davis
On Sunday, February 17, 2013 23:08:41 Walter Bright wrote:
 On 2/17/2013 10:27 PM, Nick Sabalausky wrote:
  I'm happy that http://dlang.org/changelog.html; no longer shows a link
  for a yet-to-be-released version of DMD (no sarcasm intended), but the
  release date listed for 2.062 is wrong.
 
 Probably because the site was generated from the master branch rather than
 the 2.062 branch (which has the correct date).

We should probably start generating the site from the latest released branch 
rather than master in order to avoid that sort of problem.

- Jonathan M Davis


Re: D 2.062 release

2013-02-17 Thread Jacob Carlborg

On 2013-02-18 06:37, Steven Schveighoffer wrote:


I agree, we need a better system.  Manually edited has its faults, and
the current system has its faults.


We could have a section that is edited manually with some important 
highlights with proper full description of new features and 
deprecated/removed ones. Then, in addition to that we could have a link 
to bugzilla for the rest.


--
/Jacob Carlborg


Re: D 2.062 release

2013-02-17 Thread Jacob Carlborg

On 2013-02-18 07:31, Walter Bright wrote:


Since I (and Jonathan) wrote the changelog, I can attest that I cut 
pasted it character for character out of the bugzilla titles, and
received no comments or complaints about it. I did it that way because
people on the n.g. asked me to do it that way.


How about a script that doesn't it automatically? Then we at least don't 
have to go to bugzilla.


--
/Jacob Carlborg


Re: D 2.062 release

2013-02-17 Thread Walter Bright

On 2/17/2013 11:23 PM, Jacob Carlborg wrote:

On 2013-02-18 07:31, Walter Bright wrote:


Since I (and Jonathan) wrote the changelog, I can attest that I cut 
pasted it character for character out of the bugzilla titles, and
received no comments or complaints about it. I did it that way because
people on the n.g. asked me to do it that way.


How about a script that doesn't it automatically? Then we at least don't have to
go to bugzilla.


As long as it isn't written in Ruby :-)

But more seriously, a D tool to do it might be interesting.