[M3devel] Status of CM3

Jay K jay.krell at cornell.edu
Wed May 28 22:13:56 CEST 2014


I'd be happy with:
  - cooperative GC, for portability, it'd remove a lot of our #ifdefs, fix PPC_DARWIN under Rosetta, and address a nagging concern I have for even NT/x86 on AMD64 wrt SuspendThread near-in-time to syscalls.
  - no-stop-the-world, for scaling 
 
Aren't they fairly standalone?
I could do without LLVM at this point. C/C++ backend is more portable.
I'd like to hope/depend that underlying pthreads/win32 does a good job with locking.
 
 - Jay

 
From: hosking at cs.purdue.edu
Date: Wed, 28 May 2014 15:32:40 -0400
To: mika at async.caltech.edu
CC: m3devel at elegosoft.com; jay.krell at cornell.edu
Subject: Re: [M3devel] Status of CM3

What is really needed is some time and attention put in to bring the CM3 runtime up to date with respect to advances in the field of runtime systems (as witnessed by Java, Go, etc.): lightweight locking ("biased" locking), cooperative GC safepoints, integration with a modern code generator (LLVM!), on-the-fly GC (avoiding the need for stopping the world).

It would be wonderful to attack these, but they are also somewhat interrelated (on-the-fly depends on per-thread safepoint handshakes, biased locking requires compiler work, etc.).  So they cannot be simply carved off independently.

On May 28, 2014, at 2:25 PM, mika at async.caltech.edu wrote:

Jay K writes:
--_af0f88f0-4e39-4643-873b-5267a8c2a602_
...
B) We want to convert FreeBSD to c-backend


I believe I tested FreeBSD/x86 and/or FreeBSD/amd64 with the C backend.
=20
=20
Specifically=2C I no longer have shelves full of a myriad of computers=2C b=
ut I have x86 and AMD64 VMs on a Mac readily accessible (i.e. Linux=2C Open=
BSD=2C FreeBSD=2C NetBSD)=2C I have the Solaris opencsw sparc32/sparc64/x86=
/amd64 machines=2C I have the Mac=2C I have Windows=2C I have the Elego Deb=
ian/amd64 maybe Debian/x86 machine and I tested many/all of these successfu=
lly. PPC/Mac can't entirely be tested on x86/Mac because Rosetta doesn't of=
fer the thread/suspend/getcontext stuff -- something cooperative suspend wi=
ll fix eventually.
...

I don't think the C backend is perfect.  If you want to switch
unconditionally, I'll have to make time to help debug it.  My fuzzy 
memory, as I mentioned, is that there's some unexplained segfault.
Ah it was with Juno, I think.  Trestle?  Overflow in window resizing?
Something like that?  Ring a bell for anyone?

I quite like the native backends.  The code is more compact than
the C backend's.  I haven't done a performance comparison... I know
performance of Modula-3 code has in general been sliding backwards
through the versions.  Things just get slower and slower and slower
with time.  I think it's a shame because Modula-3's niche (well the one
I am interested in) is to be "almost the performance and simplicity of
C with the safety of Java (and some cool software engineering stuff)".
CM3 definitely compromised this, and while they added some cool new
features, most of them (e.g., dynamic relinking of running programs) as
far as I know are not being used.  The work on cleaning up TEXTs has 
gone a ways to remedying the situation but I think there's much else.
Ok now I'm off on a tangent...

   Mika


Antony Hosking | Associate Professor | Computer Science | Purdue University305 N. University Street | West Lafayette | IN 47907 | USAMobile +1 765 427 5484


 		 	   		  
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://m3lists.elegosoft.com/pipermail/m3devel/attachments/20140528/c8543840/attachment-0002.html>


More information about the M3devel mailing list