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