Slashdot is powered by your submissions, so send in your scoop


Forgot your password?
Back for a limited time - Get 15% off sitewide on Slashdot Deals with coupon code "BLACKFRIDAY" (some exclusions apply)". ×

Comment Re:No one cares about D (Score 3, Informative) 404

I can't think of something with significant market share, but there is now an indie game on Steam written in D: Mayhem Intergalactic

Additionally, D is link-compatible with C. Using C libraries from D is as easy as porting the header files to D. There are a couple of tools for (mostly) automating this process, and quite a lot of the major C libraries have D bindings available.

Comment Re:Python and D (Score 1) 570

There's no way that I can see to do this automatically.

The concern is this (reposted here so people don't have to dig through Pyd's docs):

class Foo {
    void bar() { writefln(""); }

void func(Foo f) {; }

When we wrap this class and this function with Pyd (or Boost.Python), we can subclass Foo with a Python class:

class PyClass(Foo):
    def bar(self):
        print ""

The behavior we want is:

>>> o = PyClass()
>>> func(o)

However, there's no way to get the D function to polymorphically call the Python subclass's method without user intervention. I cannot generate the required wrapper with templates alone. Therefore, users must write thin wrapper classes in D, and expose the wrappers to Python:

class FooWrap : Foo {
    mixin OverloadShim;
    void bar() {
        get_overload(&, "bar");

get_overload performs a bit of magic, checking if the current object is an actual instance of FooWrap or a Python subclass, and calling the proper method as appropriate.

In the dim and distant future, I may be able to generate code like this in a SWIG-like fashion. D is remarkably easy to parse (perhaps one of the language's strongest advantages over C++), and I have almost completed a D parser written in Python (using Pyparsing). Since Pyd's build utility is written in Python, doing this kind of trickery shouldn't prove too difficult.

The hardest part of climbing the ladder of success is getting through the crowd at the bottom.