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