D.gnu - Difference in dmd and gdmd -lib option
- Dan Olson (25/25) Nov 01 2012 I am coming back to D fun after a year. I am playing on osx 10.6 and ju...
- Jacob Carlborg (5/11) Nov 02 2012 Cool, I also tried this, with DMD tough. I didn't get very far, there
- Dan Olson (18/20) Nov 02 2012 Jacob, how far did you get?
- Jacob Carlborg (10/27) Nov 02 2012 I didn't try much, I never was able to compile DMD with the SDK used buy...
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