[M3devel] switching to C backend?

dirk muysers dmuysers at hotmail.com
Sat Jul 18 10:42:14 CEST 2015

May I remind you Norman Ramsey’s opinion on the subject:

Code generation is my business :-)

Comments on a few options:

  a.. CLR: 

    a.. Pro: industrial support 
    b.. Con: you have to buy into their type system pretty much completely; depending on what you want to do with types, this may not matter 
    c.. Con: Only Windows platform is really prime-time quality
  b.. LLVM:

    a.. Pro: enthusiastic user community with charismatic leader 
    b.. Pro: many interesting performance improvements 
    c.. Con: somewhat complex interface 
    d.. Con: history of holes in the engineering; as LLVM matures expect the holes in the engineering to be plugged by adding to the complexity of the interface
  c.. C--

    a.. Pro: target is an actual written language, not an API; you can easily inspect, debug, and edit your C-- code 
    b.. Pro: design is reasonably mature and reasonably clean 
    c.. Pro: supports accurate garbage collection 
    d.. Pro: most users report it is very easy to use 
    e.. Con: very small development team 
    f.. Con: as of early 2009, supports only three hardware platforms (x86, PPC, ARM) 
    g.. Con: does not ship with a garbage collector 
    h.. Con: future of project is uncertain
  d.. C as target language

    a.. Pro: looks easy 
    b.. Con: nearly impossible to get decent performance 
    c.. Con: will drive you nuts in the long run; ask the long line of people who have tried to compile Haskell, ML, Modula-3, Scheme and more using this technique. At some point every one of these people gave up and built their own native code generator.
Summary: anything except C is a reasonable choice. For the best combination of flexibility, quality, and expected longevity, I'd probably recommend LLVM. But your example code is very close to C--, so that may be an advantage.

Full disclosure: I am affiliated with the C-- project.

From: Jay K 
Sent: Saturday, July 18, 2015 10:27 AM
To: m3devel 
Subject: [M3devel] switching to C backend?

Any objection if I start switching targets to the C backend? 

In particular, Darwin does not support m3gdb, so debuggability is not a factor.

- Jay

M3devel mailing list
M3devel at elegosoft.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://m3lists.elegosoft.com/pipermail/m3devel/attachments/20150718/0900c2cf/attachment-0002.html>

More information about the M3devel mailing list