D.gnu - Difference in dmd and gdmd -lib option
- Dan Olson <zans.is.for.cans yahoo.com> Nov 01 2012
- Jacob Carlborg <doob me.com> Nov 02 2012
- Dan Olson <zans.is.for.cans yahoo.com> Nov 02 2012
- Jacob Carlborg <doob me.com> Nov 02 2012
I am coming back to D fun after a year. I am playing on osx 10.6 and just built native gdc last weekend using github gdc-4.7. Sorry if this has been discussed before, but my searches could not find it. I discovered that dmd and gdmd -lib behave different. I really like the way dmd -lib option works. Is this known, expected, or something that should be fixed? dmd -lib breaks up a d module (file) into separate compilation units so, for example, if a d module has 5 funtions, the library will have 5 or more .o (one for each function). If you link to only one of those functions, you only get it in your final executable. gdmd does not. It produces a single .o per d module The beauty of the dmd approach is that I can call D code from an objc program, and only the parts of the dmain2.d needed are linked in (rt_init/rt_term). With gdc, I can't get rt_init() and rt_term() without also getting the dmain2's extern(C) main(). So I am forced to have D be main. Or I must go in and break up dmain2.d into smaller code pieces if I want to have D libs callable by objc. I am switching to gdc because "I have a Dream" that one day D can be used to write ios apps. And gdc has the arm ISA so I can cross-compile. So it is closer than dmd. I know eventually it will need a rewritten druntime, but my baby step is to just compile a D function and call it from an ios app. But even tinier step I am on now is to call a D function from iphone sim (which uses i386). Thanks and many adventures, Dan
Nov 01 2012
On 2012-11-02 07:58, Dan Olson wrote:I am switching to gdc because "I have a Dream" that one day D can be used to write ios apps. And gdc has the arm ISA so I can cross-compile. So it is closer than dmd. I know eventually it will need a rewritten druntime, but my baby step is to just compile a D function and call it from an ios app. But even tinier step I am on now is to call a D function from iphone sim (which uses i386).
Cool, I also tried this, with DMD tough. I didn't get very far, there are functionality that DMD needs that's missing from the iPhone SDK. -- /Jacob Carlborg
Nov 02 2012
Jacob Carlborg <doob me.com> writes:Cool, I also tried this, with DMD tough. I didn't get very far, there are functionality that DMD needs that's missing from the iPhone SDK.
Jacob, how far did you get? A couple years ago I started building a bare druntime. Not too useful because I stripped GC and with that goes classes, delagates, dynamic arrays, and other stuff I don't recall. I was going for small embedded use of D (not ios) and wanted to see how much of the language required GC support. Anyway, I was thinking of reviving some of that to build a minimal support runtime for arm/ios, but leave the GC in since ios is not a small embedded system. Eventualy add more and more of phobos. The reason I want to do this is that I think objective-c should just be one of those interesting hybrid languages in the evolution tree, but should begin to die off since modern languages are so better designed (my opinion). I read a post in D newsgroup years ago about a compiler mod that allows D to use objective-C style method dispatch (by M. Fortin? or somebody like that - I'd have to search). An ARM D with his feature, then you can use D to write for ios. It would make programming fun! Well, more fun.
Nov 02 2012
On 2012-11-02 17:12, Dan Olson wrote:Jacob, how far did you get?
I didn't try much, I never was able to compile DMD with the SDK used buy the simulator. One thing I know was missing was the Gestalt function, it's used to get information about Mac OS X, like what exact version.A couple years ago I started building a bare druntime. Not too useful because I stripped GC and with that goes classes, delagates, dynamic arrays, and other stuff I don't recall. I was going for small embedded use of D (not ios) and wanted to see how much of the language required GC support. Anyway, I was thinking of reviving some of that to build a minimal support runtime for arm/ios, but leave the GC in since ios is not a small embedded system. Eventualy add more and more of phobos. The reason I want to do this is that I think objective-c should just be one of those interesting hybrid languages in the evolution tree, but should begin to die off since modern languages are so better designed (my opinion). I read a post in D newsgroup years ago about a compiler mod that allows D to use objective-C style method dispatch (by M. Fortin? or somebody like that - I'd have to search). An ARM D with his feature, then you can use D to write for ios. It would make programming fun! Well, more fun.
That would be so cool to have. The DMD fork you referring to would be this one by Michel Fortin: http://michelf.ca/projects/d-objc/ There's an alpha version available but it's getting quite old now. -- /Jacob Carlborg
Nov 02 2012








Jacob Carlborg <doob me.com>