[M3devel] Binary compatibility and back ends.

Daniel Alejandro Benavides Diaz danielal.benavides at bancoagrario.gov.co
Sat Feb 28 00:19:01 CET 2015

Hi all:
Good to know somebody is keeping alive the system (well besides himself),

The main thing to keep in mind, are instrumentation tools and profilers, but not just for dedicated optimizers, but for unsafe array overflow checking (using Gcc AST), probably as my initial project was once I thought at the time, integer arithmetic (which I believe Gcc already does in  for div by 0).

I read about one such tool for Win32 API checking of parameters, I suppose DEC has something to do with that, but I can't give any guarantees (if it has anything to do with Modula-3 CG), besides a tool I already know and has published an article online for MIPS and SPARC optimizing profilers.

This could be worth to keep ASTs in common, at Interpreter Runtime level, remember, ASTs in Olivetti object notation (basically records with a method suite) very powerful by their-selves, so one can encode every AST as a deep objects, I heard my longtime M3- friend, Richard Stallman approached (as is publicly known) Olivetti about releasing their backend as GPL, but they answered no. Somehow, DEC capitalized I believe for making Gnu Compiler suite built for that purpose, although Richard didn't like much that approach as far as I read.

The interesting part of Olivetti notation, is that one effectively build a type inference machine for it (if the leave nodes  are untyped, when passing CodeGen phase to C or Assembly), besides that Martin Abadi was working before DEC ended operations in an object type system method addition, one could see that as a form of dynamically extending objects in Modula-3 itself, which is the orientation of having interpretation in languages, and by that the program itself at runtime, quite sophisticated if one thinks in an OS or RT itself, this is very lo e level capabilities I have studied, interestingly, is very hard to type infer on efficient P time.

DEC has a report on dynamic typing in statically typed languages. Martin formalized M3 language based on its calculus and someone else interpreted it in terms of ideals of set theory, if someone wants to elucidate deeper properties of the language.

If one could think in terms of GCC ASTs, or whatever IL, that would make the trick to allow recompilation and postmortem automated debugging, main issue being the unsafety of its analysis, based on runtime data, 

Thanks in advance,

-----Mensaje original-----
De: Rodney M. Bates [mailto:rodney_bates at lcwb.coop] 
Enviado el: Jueves, 19 de Febrero de 2015 02:01 p.m.
Para: m3devel
Asunto: [M3devel] Binary compatibility and back ends.

Any knowledge of what we have or ideas about what we want in the way of binary compatibility between the code generated by different back ends?  How much of it do we have?  How much do we want?

I know of at least a few things that require a match between generated code and the runtime.  Open array heap objects, text literals are examples.
Probably the layout of the allocator/GC word at the head of heap objects too.

I recall from a number of years ago, having a failure involving passing a one-byte value as a parameter, but don't remember the details.
That would have been PM3, and maybe linking with a different language.
I have also recently had a problem involving passing a record/struct between code from the M3 gcc-4.7 back end and C code compiled by a more recent stock gcc.

Rodney Bates
rodney.m.bates at acm.org

More information about the M3devel mailing list