Expanding Phobos from a flat hierachy

Andrei Alexandrescu SeeWebsiteForEmail at erdani.org
Wed Feb 6 06:03:00 PST 2013


On 2/6/13 8:42 AM, Jacob Carlborg wrote:
> On 2013-02-06 13:02, Robert wrote:
>> On Wed, 2013-02-06 at 08:56 +0100, Don wrote:
>>> Eg, are there entire top-level branches which are obsolete? How
>>> many stupid names are there (eg, "std.algorithm2") which were
>>
>> Well in order to avoid such "stupid" names, I think it would be a good
>> idea to keep the standard library small. Include only the things that
>> are important to be "standard" in order to ensure interoperability
>> between libraries.
>>
>> Instead we should offer a central place for D libraries, like CPAN for
>> perl or http://pypi.python.org/pypi for python.
>
> Here you go:
>
> https://github.com/jacob-carlborg/orbit/wiki/Orbit-Package-Manager-for-D
>
> I will replace the Ruby code with D.

That's awesome. I skimmed the docs and the capabilities are pretty much 
what I'd expect. We should push for integrating Orbit in the standard 
distro. That entails a formal proposal, community review and voting etc. 
etc.

One question - since you mention replacing Ruby with D, I'm thinking it 
may be a good opportunity to just use D syntax everywhere. The arguments 
have been hashed already - a D user is supposed to know of all syntaxes 
that of D itself etc.

As an example I was looking at 
https://github.com/jacob-carlborg/orbit/wiki/orbfile which has:

orb "dwt", "0.5.3" # specifies an exact version
orb "sqlite" # uses the latest version
orb "orange", "> 0.0.1" # uses any version greater than "0.0.1", 
basically any comparison operator is allowed here
orb "derelict", "~> 0.3.4" # uses any version above "0.3.4" that is 
"0.x.y", i.e. won't use any "1.x.y"     version

Nice enough but there's no shame about

orb("dwt", "0.5.3"); // specifies an exact version
orb("sqlite"); // uses the latest version
orb("orange", "> 0.0.1"); // uses any version greater than "0.0.1", 
basically any comparison operator is allowed here
orb("derelict", "~> 0.3.4"); // uses any version above "0.3.4" that is 
"0.x.y", i.e. won't use any "1.x.y"     version

The alternative orbspec 
https://github.com/jacob-carlborg/orbit/wiki/orbspec%20specification 
also has its own syntax:

# orange.orbspec
# name "orange" # inferred from the name of the orbspec
version "1.0.0"
author "Jacob Carlborg"
type :library
files << ["a.d", "b.di"] # an array of source files

This is in a way worse because there's a tidbit of syntax for each 
element. I'm thinking:

spec = "orange";
version = "1.0.0";
author = "Jacob Carlborg";
type = "library";
files = ["a.d", "b.di"]; // an array of source files

This code can be imported into an environment that has the appropriate 
definitions.

Hash table literals may also be also very useful.

Thoughts?


Andrei


More information about the Digitalmars-d mailing list