www.digitalmars.com         C & C++   DMDScript  

digitalmars.D - Cross-Platform D

reply Sha Chancellor <schancel pacific.net> writes:
Warning: This issue has probably been addressed before, but I'm going to
start it up again.
First let me say I love D, it's a great language.  C and C++ are also
nice languages.  Their ISO standards are nice in that they provide a good
way to write simple programs that are (relatively) cross-platform. 
However, they lack some huge things, namely: threading, gui, and sockets. 
It would be nice to see the runtime library for D include these features.
I recognize that there is a lot of different projects around for D that
tout cross-platform GUI APIs.  But it would be nice to have *one* that
was part of the runtime library.  Something that you could put in a good
about D, and expect to work.  I realize a lot of things are platform
specific, and can never be implemented in a general GUI API.  But it would
be nice to have something available.
Another thing, right on the website D is compared with Java in a number
of ways.  Mainly from a syntax/feature standpoint.  However, one of the
nicest aspects of Java is that there is a HUGE amount of classes already
there for you to abuse.  What's more, they're part of the standard
installation.  You don't have to go find them for every OS and platform, or
include them with your installer.  This is something D currently lacks.
I don't see any site or group around that maintains such a thing for D. 
 Is this all done by Walter?  Phobos is nice, but it's pretty minimal,
and i've heard there are license issues with it.  I don't know if those
have been resolved, but it would be nice to have an open runtime that
was covered under some type of artistic or LGPL license.  It would also be
nice to have a central body of people to oversee and maintain it, and a
single website for such a project that could contain documentation and
the likes.
Even if such a project was started, would Walter be willing to endorse
it as an official project?
I don't know, maybe I'm full of it, but what do you guys think?  Walter?
 Comments please...
 
Jul 21 2004
next sibling parent reply "Jarrett Billingsley" <kb3ctd2 yahoo.com> writes:
D hasn't even reached version 1 yet, so perhaps it's a little premature to
judge the runtime library ;)  though you're entirely right, D's runtime
needs some more meat on it (and walter even says it in the docs..!).

i've never been a big fan of cross-platform GUIs, however.  all that i've
used have been either unresponsive, or nonstandard, or just plain ugly.
what would be nice is if there were a way to interface with the GUI of the
OS it's compiled for.  as in the windows.d module would be part of the
runtime, as well as all the GUIs for the various linuces, unices, OSX (?)
etc.
Jul 21 2004
parent Sha Chancellor <schancel pacific.net> writes:
In message <cdmgu8$30ch$1 digitaldaemon.com> 
 "Jarrett Billingsley" <kb3ctd2 yahoo.com> wrote: 

D hasn't even reached version 1 yet, so perhaps it's a little premature to
judge the runtime library ;)  though you're entirely right, D's runtime
needs some more meat on it (and walter even says it in the docs..!).

I don't know, it'd be good to start now before it's too set in it's ways. Parts of Phobos already seem like they don't work well with other parts. Just my opinion though.
i've never been a big fan of cross-platform GUIs, however.  all that i've
used have been either unresponsive, or nonstandard, or just plain ugly.
what would be nice is if there were a way to interface with the GUI of the
OS it's compiled for.  as in the windows.d module would be part of the
runtime, as well as all the GUIs for the various linuces, unices, OSX (?)
etc.

I can fully understand that. Most stuff is not handled very well in cross platform GUI wrappers. I wasn't implying it should be an end-all be all. But it would be nice to have both in the runtime. Have those interfaces, and then also have a standard wrapper on them for doing simple things. On a side note though, WxWindows doesn't do such a bad job. But I wouldn't suggest that be interfaced or something. It could be done so much better using D specific things like delegates and what not.
Jul 21 2004
prev sibling next sibling parent reply Sean Kelly <sean f4.ca> writes:
In article <cdmgjb$308b$2 digitaldaemon.com>, Sha Chancellor says...
Warning: This issue has probably been addressed before, but I'm going to
start it up again.
First let me say I love D, it's a great language.  C and C++ are also
nice languages.  Their ISO standards are nice in that they provide a good
way to write simple programs that are (relatively) cross-platform. 
However, they lack some huge things, namely: threading, gui, and sockets. 
It would be nice to see the runtime library for D include these features.

It will, but this may not all make it in for 1.0. D is multithread-aware (it has a "synchronized" keyword) but advanced primitives are still in development. And Phobos already has a Socket class, but more advanced socket IO will likely not come until after 1.0 as it depends on advanced threading techniques.
I recognize that there is a lot of different projects around for D that
tout cross-platform GUI APIs.  But it would be nice to have *one* that
was part of the runtime library.  Something that you could put in a good
about D, and expect to work.  I realize a lot of things are platform
specific, and can never be implemented in a general GUI API.  But it would
be nice to have something available.

I agree. I think we'll see a GUI library by 2.0 as it's a pretty hot topic.
Another thing, right on the website D is compared with Java in a number
of ways.  Mainly from a syntax/feature standpoint.  However, one of the
nicest aspects of Java is that there is a HUGE amount of classes already
there for you to abuse.  What's more, they're part of the standard
installation.  You don't have to go find them for every OS and platform, or
include them with your installer.  This is something D currently lacks.

This will come with time. For now I'd prefer to have a small well-designed library and then later extend that than to have a large library mostly containing stuff that's poorly designed.
I don't see any site or group around that maintains such a thing for D. 
 Is this all done by Walter?  Phobos is nice, but it's pretty minimal,
and i've heard there are license issues with it.  I don't know if those
have been resolved, but it would be nice to have an open runtime that
was covered under some type of artistic or LGPL license.

No license issues with Phobos, but I personally think it lacks a bit of cohesion. Before D becomes official I'd like to see a careful review of everything in Phobos with a mind for consistency and interoperability.
It would also be
nice to have a central body of people to oversee and maintain it, and a
single website for such a project that could contain documentation and
the likes.

This will probably come a bit later. There was some talk of a semi-formal review board for Phobos stuff but it never materialized. I think people are waiting for the language to settle down a bit more first.
Even if such a project was started, would Walter be willing to endorse
it as an official project?

Yes. In fact, the ultimate goal it to have D standardized. Until then however, many members of the community are pretty much doing that anyway, what with bug reports, feature requests, and submissions. Sean
Jul 21 2004
next sibling parent reply Sha Chancellor <schancel pacific.net> writes:
In message <cdmihc$314u$1 digitaldaemon.com> 
 Sean Kelly <sean f4.ca> wrote: 

In article <cdmgjb$308b$2 digitaldaemon.com>, Sha Chancellor says...
Warning: This issue has probably been addressed before, but I'm going to
start it up again.
First let me say I love D, it's a great language.  C and C++ are also
nice languages.  Their ISO standards are nice in that they provide a good
way to write simple programs that are (relatively) cross-platform. 
However, they lack some huge things, namely: threading, gui, and sockets. 
It would be nice to see the runtime library for D include these features.

It will, but this may not all make it in for 1.0. D is multithread-aware (it And Phobos already has a Socket class, but more advanced socket IO will likely not come until after 1.0 as it depends on advanced threading techniques.
I recognize that there is a lot of different projects around for D that
tout cross-platform GUI APIs.  But it would be nice to have *one* that
was part of the runtime library.  Something that you could put in a good
about D, and expect to work.  I realize a lot of things are platform
specific, and can never be implemented in a general GUI API.  But it would
be nice to have something available.

I agree. I think we'll see a GUI library by 2.0 as it's a pretty hot topic.
Another thing, right on the website D is compared with Java in a number
of ways.  Mainly from a syntax/feature standpoint.  However, one of the
nicest aspects of Java is that there is a HUGE amount of classes already
there for you to abuse.  What's more, they're part of the standard
installation.  You don't have to go find them for every OS and platform, or
include them with your installer.  This is something D currently lacks.

This will come with time. For now I'd prefer to have a small well-designed library and then later extend that than to have a large library mostly containing stuff that's poorly designed.
I don't see any site or group around that maintains such a thing for D. 
 Is this all done by Walter?  Phobos is nice, but it's pretty minimal,
and i've heard there are license issues with it.  I don't know if those
have been resolved, but it would be nice to have an open runtime that
was covered under some type of artistic or LGPL license.

No license issues with Phobos, but I personally think it lacks a bit of cohesion. Before D becomes official I'd like to see a careful review of everything in Phobos with a mind for consistency and interoperability.

I swear I heard some people complaining about phobos's license. I agree, it seems like a bunch of classes which don't necessarily work together. It would be nice to see that kind of a review done.
It would also be
nice to have a central body of people to oversee and maintain it, and a
single website for such a project that could contain documentation and
the likes.

This will probably come a bit later. There was some talk of a semi-formal review board for Phobos stuff but it never materialized. I think people are waiting for the language to settle down a bit more first.

I suppose. But i want it _NOW_! I'm so excited =/
Even if such a project was started, would Walter be willing to endorse
it as an official project?

many members of the community are pretty much doing that anyway, what with bug reports, feature requests, and submissions.

But there's no "official" location, wiki, or otherwise. I don't know.. I mean there's dsource.org and I know there is a wiki at the moment that's maintaining some documentation. But it'd be nice to see something more formal.
Jul 21 2004
parent Gold Dragon <dragonwing dragonu.net> writes:
 But there's no "official" location, wiki, or otherwise.  I don't know..
 I mean there's dsource.org and I know there is a wiki at the moment
 that's maintaining some documentation.  But it'd be nice to see something
 more formal.
  

I have a feeling that in the future, www.dsource.org and WIKI will either be *the* places to be for stuff on D. To many have sources all over the place. If more people posted at a centralized location or added their links to WIKI then it would be more visual on how much is being done towards libraries and generalized programs.
Jul 22 2004
prev sibling parent reply Gold Dragon <dragonwing dragonu.net> writes:
Sean Kelly wrote:

 It will, but this may not all make it in for 1.0.  D is multithread-aware (it
 has a "synchronized" keyword) but advanced primitives are still in development.
 And Phobos already has a Socket class, but more advanced socket IO will likely
 not come until after 1.0 as it depends on advanced threading techniques.

Well, wouldn't it make the compiler extremely complex to have threading built inside? I can see how it would make D extremely awesome as it is one of the features in Java that makes it so great. It would force the compiler to be built for each OS out there. Some OS use POSIX threads and Windows uses OS/2 system. Of course if Windows ever made a Visual D they probably wouldn't have any trouble creating the threading framework. It would make treading easier for the programmer but harder for the person or people creating the compiler.
 This will come with time.  For now I'd prefer to have a small well-designed
 library and then later extend that than to have a large library mostly
 containing stuff that's poorly designed.

I guess I agree, I believe whatever everyone else believes. I AM sheep.
 No license issues with Phobos, but I personally think it lacks a bit of
 cohesion.  Before D becomes official I'd like to see a careful review of
 everything in Phobos with a mind for consistency and interoperability.

I agree, the bit about adding documentation is good because it forces people to be coherent and explain what they are doing. This opposed to just halfassing the source with no documentation and leaving the programmer to guess work the bugs and workarounds.
 This will probably come a bit later.  There was some talk of a semi-formal
 review board for Phobos stuff but it never materialized.  I think people are
 waiting for the language to settle down a bit more first.

What about WIKI? Isn't there some information on there or can some information be posted there. Are the developers of Phobos 1337 or just some Joe off the street?
 Yes.  In fact, the ultimate goal it to have D standardized.  Until then
however,
 many members of the community are pretty much doing that anyway, what with bug
 reports, feature requests, and submissions.

Even after D is standardized we probably won't see anything good come of it for a while. I feel that one of the problems with C and C++ is that changes to the compiler to add great and new features is such a difficult and LONG task. People have their own perspective on what the language should be and what it should have. It already has been a long wait for D to reach version 1.0 and the features it does have are wonderful. The only thing that is missing is version 1.0 of the compiler without and bugs. A great IDE that is also in final that compiles the code, does your dishes, and makes your bed. I haven't seen DTL but from what I have heard of it seems to be awesome and if it isn't then it will be in a short time. Demios from what is in it now is great and the primary developers are adding features that make it even more so. The documentation on the language needs to be redone for the final release of the Compiler detailing (and I stress Detailing) ALL the features and how to use them, sample source on how to do everything. From Inline Assembly to Direct interfacing with Hardware to every possible way to use an array. From the tinyest feature to a most difficult. If Walter and/or friends were to make a COMPREHENSIVE book for D then I would buy it.
Jul 21 2004
parent Sean Kelly <sean f4.ca> writes:
In article <cdmmoa$1jr$1 digitaldaemon.com>, Gold Dragon says...
Sean Kelly wrote:

 It will, but this may not all make it in for 1.0.  D is multithread-aware (it
 has a "synchronized" keyword) but advanced primitives are still in development.
 And Phobos already has a Socket class, but more advanced socket IO will likely
 not come until after 1.0 as it depends on advanced threading techniques.

Well, wouldn't it make the compiler extremely complex to have threading built inside? I can see how it would make D extremely awesome as it is one of the features in Java that makes it so great. It would force the compiler to be built for each OS out there. Some OS use POSIX threads and Windows uses OS/2 system. Of course if Windows ever made a Visual D they probably wouldn't have any trouble creating the threading framework.

It's really too bad that MS didn't make more of an effort for full POSIX support. It actually exists as part of Windows Services for Unix, but that's an entirely new susbsystem so it's unrealistic to ask users to install it. I think when D gets better threading it will be a library addition, likely eventually a part of Phobos. There's no real need for full language support, though I agree that it would be pretty cool to have condvars as first class citizens (assuming that level of integration would actually increase ease of use).
 Yes.  In fact, the ultimate goal it to have D standardized.  Until then
however,
 many members of the community are pretty much doing that anyway, what with bug
 reports, feature requests, and submissions.

Even after D is standardized we probably won't see anything good come of it for a while. I feel that one of the problems with C and C++ is that changes to the compiler to add great and new features is such a difficult and LONG task. People have their own perspective on what the language should be and what it should have. It already has been a long wait for D to reach version 1.0 and the features it does have are wonderful.

The schedule for C/C++ is 5 years, and I think this is the rule for software standards. I actually really like this as it gives the community time to offer plenty of constructive feedback and helps reduce the risk of knee-jerk resposes to new ideas. Language stability over time is a real selling point to me, at least once the language is at a point where it does everything I want it to ;)
The only thing that is missing is version 1.0 of the compiler without 
and bugs. A great IDE that is also in final that compiles the code, does 
your dishes, and makes your bed. I haven't seen DTL but from what I have 
heard of it seems to be awesome and if it isn't then it will be in a 
short time. Demios from what is in it now is great and the primary 
developers are adding features that make it even more so.

I would love to have a good source-level IDE for D. I've never been a tremendous fan of printf debugging :)
The documentation on the language needs to be redone for the final 
release of the Compiler detailing (and I stress Detailing) ALL the 
features and how to use them, sample source on how to do everything. 
 From Inline Assembly to Direct interfacing with Hardware to every 
possible way to use an array. From the tinyest feature to a most 
difficult. If Walter and/or friends were to make a COMPREHENSIVE book 
for D then I would buy it.

A book is in the works, so consider your wish granted. We still need a complete and accurate spec, but this sort of thing takes time and I really don't expect one until after 1.0. And by spec I mean something more like the C or C++ spec than the Java spec. Sean
Jul 21 2004
prev sibling next sibling parent Berin Loritsch <bloritsch d-haven.org> writes:
Sha Chancellor wrote:

 Warning: This issue has probably been addressed before, but I'm going to
 start it up again.
 First let me say I love D, it's a great language.  C and C++ are also
 nice languages.  Their ISO standards are nice in that they provide a good
 way to write simple programs that are (relatively) cross-platform. 
 However, they lack some huge things, namely: threading, gui, and sockets. 
 It would be nice to see the runtime library for D include these features.

I share this goal, but I do have some observations based on my experience with Java--which has come the closest to true cross platform operation than any other platform I know of (off the top of my head). First, the runtime library for Java is HUGE. It's at least 15MB of compiled code. It's too big. Since things are still relatively small for D, I would like the "library" to actually be a collection of smaller libraries. While D includes the "synchronized" keyword (much like Java), there is a place for synchronization primitives. Mutexes, semaphores, triggers, barriers, etc. All of these are hard to do well, and would make a perfect addition for a standardized library. As to a GUI, I can only say that it is an admirable goal. The quickest way to get there is to leverage something like GTK that is ported to most platforms already (and has a C binding). However, if we wanted to do it in a way that takes advantage of D language features, it would take much longer--but I would definitely not follow Java's example on this front. They started out with AWT which had problems because their bindings to the individual platforms was buggy and not uniform. Someone had the bright idea that all GUIs should be the exact same regardless of what is native to that platform so we got inflicted with Swing which took the MVC concept too far by providing a model, view, and controller for each control! I used to be a fan of themable GUIs until I had to write for multiple platforms and I quickly realized that the reliability is far more important.
 I recognize that there is a lot of different projects around for D that
 tout cross-platform GUI APIs.  But it would be nice to have *one* that
 was part of the runtime library.  Something that you could put in a good
 about D, and expect to work.  I realize a lot of things are platform
 specific, and can never be implemented in a general GUI API.  But it would
 be nice to have something available.

I would like to see a little darwinism take place on the GUI space first. It is important to try a few ideas *before* declaring a standard just to make sure we aren't painting ourselves into a dead end. It's critical that the GUI library stays as transparent as humanly possible because there are a long laundry list of problems with Swing. It is proof that when you try to rewrite the GUI you will have several mistakes (some of which are showstoppers) before you get it right. For an idea, go to Java's bug parade and search for GUI bugs that are still open. Scary.
 Another thing, right on the website D is compared with Java in a number
 of ways.  Mainly from a syntax/feature standpoint.  However, one of the
 nicest aspects of Java is that there is a HUGE amount of classes already
 there for you to abuse.  What's more, they're part of the standard
 installation.  You don't have to go find them for every OS and platform, or
 include them with your installer.  This is something D currently lacks.
 I don't see any site or group around that maintains such a thing for D. 

Having developed for Java, I have fallen victim to a solution I developed being replaced by the ever growing Java runtime library. Its almost like Microsoft in that regard. Each of those solutions were just as cross platform as the runtime. On the other hand, the key advantage of the Java runtime isn't the language itself, but the standard library that you can expect to be installed on every system that runs Java. The bulk of that runtime library is written in pure Java. If the same pattern is used for a D runtime library, then we can make it much easier to manage a cross platform library.
  Is this all done by Walter?  Phobos is nice, but it's pretty minimal,
 and i've heard there are license issues with it.  I don't know if those
 have been resolved, but it would be nice to have an open runtime that
 was covered under some type of artistic or LGPL license.  It would also be
 nice to have a central body of people to oversee and maintain it, and a
 single website for such a project that could contain documentation and
 the likes.

Honestly, for a standard runtime library to really take off and actually be used, it is important to not have any license barriers. A BSD style license is probably the least controversial type of license for this type of thing. Any GPL variant (including LGPL) is viral depending on how you define "binding" to the library. The FSF experts say that using a library in a JVM constitutes "extending" the library so it becomes viral. D isn't running in a VM so LGPL might be OK but I would rather avoid the whole question to begin with.
 I don't know, maybe I'm full of it, but what do you guys think?  Walter?
  Comments please...
  

It should be started slowly and grown cooperatively. It would have to be its own project for sure.
Jul 21 2004
prev sibling parent J C Calvarese <jcc7 cox.net> writes:
Sha Chancellor wrote:
 Warning: This issue has probably been addressed before, but I'm going to
 start it up again.

The GUI library issue has been brought up, but it hasn't really been resolved either.
 First let me say I love D, it's a great language.  C and C++ are also
 nice languages.  Their ISO standards are nice in that they provide a good
 way to write simple programs that are (relatively) cross-platform. 
 However, they lack some huge things, namely: threading, gui, and sockets. 
 It would be nice to see the runtime library for D include these features.
 I recognize that there is a lot of different projects around for D that
 tout cross-platform GUI APIs.  But it would be nice to have *one* that
 was part of the runtime library.  Something that you could put in a good
 about D, and expect to work.  I realize a lot of things are platform
 specific, and can never be implemented in a general GUI API.  But it would
 be nice to have something available.

I think the only cross-platform GUI library out there right now is DUI. The DWT team may be planning on going cross-platform, but they're still in what I would call "the early stages". It's not vaporware, but it's a massive undertaking and a lot of effort is required just to get files compiled. (It's a port of IBM's Java SWT.) In case you didn't know, there's a list of GUI projects: http://www.prowiki.org/wiki4d/wiki.cgi?AvailableGuiLibraries
 Another thing, right on the website D is compared with Java in a number
 of ways.  Mainly from a syntax/feature standpoint.  However, one of the
 nicest aspects of Java is that there is a HUGE amount of classes already
 there for you to abuse.  What's more, they're part of the standard
 installation.  You don't have to go find them for every OS and platform, or
 include them with your installer.  This is something D currently lacks.
 I don't see any site or group around that maintains such a thing for D. 

The libraries will be written. There are quite a few wrapper projects floating around. I think that as the language stabilizes more native D libraries will be written.
  Is this all done by Walter?  Phobos is nice, but it's pretty minimal,
 and i've heard there are license issues with it.  I don't know if those
 have been resolved, but it would be nice to have an open runtime that
 was covered under some type of artistic or LGPL license.  It would also be
 nice to have a central body of people to oversee and maintain it, and a
 single website for such a project that could contain documentation and
 the likes.

Walter has had some help with Phobos, but he's slow in responding to submitted material (something about being busy adding compiler features and fixing bugs). Hopefully, as D 1.0 arrives, he'll have more time to corral Phobos contributions. The license issues will be ironed out. I think mostly the current license isn't explicit enough or not quite all of the bits of Phobos are licensed correctly.
 Even if such a project was started, would Walter be willing to endorse
 it as an official project?

I think he would endorse a finished product if it met his standards. So start coding and come back and submit it when it's complete. ;) Seriously, though, you can either: 1. Assist one of the existing projects. (Who would turn down a volunteer?) or 2. Start your own. (dsource.org would even host it.) I think Walter has indicated before that he'd consider shipping someone else's GUI library with the compiler, but he doesn't plan on creating it himself.
 I don't know, maybe I'm full of it, but what do you guys think?  Walter?
  Comments please...

(By the way, feel free to use paragraphs.) -- Justin (a/k/a jcc7) http://jcc_7.tripod.com/d/
Jul 21 2004