MiniD binding library update, better compilation on Linux

Jarrett Billingsley kb3ctd2 at yahoo.com
Sun Nov 18 20:12:25 PST 2007


Haven't posted any announcements about my project here in a while, so now's 
as good a time as any.

So since 1.0 came out in August, there have been a few major bugfixes, and 
it's now technically at 1.1 because of a breaking change in the code 
generation for class declarations to fix a supercall bug.  It's also had 
some standard library functionality added, and some more useful stuff added 
to the native API as well.

What I've been working on most recently is (1) getting the thing to compile 
right under Linux with DSSS, and (2) rewriting the binding library to work 
around DMDWin's symbol length issues (*shakes fist*).  Let's go through 
them:

1) Most of the "getting it to compile right under Linux" was actually "me 
figuring out how the hell to get DSSS, GDC, and Tango to play nice on my 
computer".  Once I'd done that, it wasn't too difficult.  What I got out of 
this:

- Don't use 'dsss net install minid'.  It works, but since it blindly grabs 
the newest repo revision, which I may have been messing with, you might 
accidentally check out a nonfunctional or beta-y build of the library.  Much 
better is for you to check out the MiniD trunk manually, then change into 
its dir and do a 'dsss build && dsss install' there.  I have the latest 
stable repo listed on the front wiki page of the MiniD DSource page (see 
link at bottom).  In fact, for DSSS users on Windows, you should probably 
use the same procedure.

- I have no idea how to get bu[il]d to work on Linux, with either GDC or 
DMD.  And especially not with Tango.  I'm just completely stumped there.

2) The binding library design I was using before was like Pyd's, where you 
specify module/class members as variadic template parameter lists.  This was 
bad news with DMDWin, as it uses the terribly limited OMF object format and 
wrapping any module or class with more than ten or so members caused it to 
fail miserably.  Now it uses a style much like the _old_ Pyd, where you have 
a sort of "module/object under construction" which you add members to one at 
a time using chained method calls.  Because the MiniD binding library wasn't 
that complex to begin with I didn't have to sacrifice any features, so 
everything's cool, it's just the syntax has changed.

Along with that change, I also added support for wrapping structs (which 
appear as classes on the MiniD side).  There's also a lot more documentation 
on this library.

The last bit of news is that I'm now working on MiniD 2, since the v1 spec 
is frozen.  The development will probably follow a very similar trajectory 
to D's -- v1 will be supported, and will have bugfixes and maybe stdlib 
additions, but no changes to the language itself, while MD2 will be a moving 
target until it, too, has its spec frozen.  You can see some of the ideas I 
have for MD2 at the bottom of the Introduction page of the wiki (and feel 
free to come up with suggestions of your own!).

The project page for MiniD is here:  http://www.dsource.org/projects/minid

There you'll find the language spec, MiniD stdlib docs, native API docs, 
installation instructions, and other links. 





More information about the Digitalmars-d-announce mailing list