[M3devel] bandwith

Jay K jay.krell at cornell.edu
Sun Mar 14 05:31:58 CET 2010


Arg.

 

 

Change does not equal instability.

Status quo does not equal better.

 

  Do you want 64bit LONGINT? Maybe, maybe not.

 

  Do you want every integer comparison to needlessly use a temporary on the stack and extra instructions?

    Maybe, maybe not.

 

  Do you want the tables in hand.c statically linked?

    Maybe, maybe not.

    They caused quite a headache albeit

    briefly, when we weren't statically linking them. Standalone apps worked fine, dynamically

    linked exhibited odd behavior. The odd behavior was "just" gui drawn incorrectly, but was actually

    indicative of deep problems.

 

  Do you want dead buggy code sitting around, waiting to be silently used as m3front changes?

   (e.g. some forms of extract look wrong).

 

  A giant lock in ThreadWin32? vs. the simple pattern documented on the web and what Java uses?

    Granted, I removed the threadpool, maybe too much simplicity and not enough efficiency?

    (But have you noticed how much ThreadWin32.m3 did churn through the years anyway?)

 

  Can you point to actual bugs?

   Granted, I don't have specifics in many cases either, such as the bad perf of the giant lock,

     but everyone knows about them.

   The system builds itself. I probably rest too much on that, granted.

    m3-sys/m3tests does pretty well (some stuff does need looking at).

   I try to add more test coverage when I make changes, but I am lazy, granted.

 

 

Some non-zero level of progress is presumably desired.

The Unix interface was painful to maintain and buggy and tended toward unsafety but claiming safety.

It is much improved now. Much safer, much easier to port. A little less efficient. Sort off less

   amenable to cross building, though really hand.c and lack of an assembler and linker are enough to kill cross builds.

   The system has never as far I know been really cross buildable, without gcc/binutils support -- has

    always needed an assembler and linker, and usually needed a C compiler. (NT386 doesn't need an assembler).

 

 

Just because interface Unix allowed for compiling more code in the past did not make it better or more correct.

  In fact possibly the opposite. Granted, we should try have it all -- correctness, features, maintability, efficiency.

  There was a lot of cruft in there getting copied from port to port without being revisited.

  Stuff having to do with Linux 1.x was in various ports.

  Every major version of FreeBSD implied extra work. We had FreeBSD, FreeBSD2, FreeBSD3, FreeBSD4.

   (There are still problems here actually, FreeBSD7 64bit I believe broke the ABI in networking,

   and we still have the related structs I think -- there is still bad stuff in interface Unix, just

   a lot less now. I still want to whittle it down more.)

 

 

There is still code in the system that redeclares struct tm incorrectly, attempting to workaround

interface Unix deficiency, when in fact interface Unix was correctly limited (the fields at the end,

and perhaps the order of the fields). In the web browsers as I recall (which never seemed

to work much in the first place, but they did/do build and come up).

 

 

> > agnostic intermediate form targeting a JIT.


 

Other than NT386, our portability rests on gcc and Posix, which are very portable

with very little effort. I haven't seen any JIT that is as portable.

 

For example there are a few systems we can't run Hudson on because it uses Java.

  e.g. MIPS64_OPENBSD, PPC32_OPENBSD 

I would actually like to generate C to gain even more portability.

Granted, JIT has the nice property of target-independent distributable binaries.

  "Package building" matrix could be cut down.

 

Generating C can get you target-independent source distributions, as most things use.

  (Granted, compilers are somewhat special, except that the world long ago

  got past not having a C compiler).

 

 

Targeting a JIT will probably be way more work than anyone has put into this system in over a decade.

Still, not a bad idea. It lets you reuse other people's code generators similarly to how we reuse gcc.

 

 

Java has been made portable to any processor, running Linux.

But not yet to other operating systems.

 

 

I think without too much work, we could use our exiting IL that parse.c reads.

It'd just need more context in places, to avoid a need for globals.

You could just write an interpreter.

It wouldn't be fast, but it would gain more portability probably.

Probably not the best idea though.

 

 

Also, the Java JIT, as one example, is among the more portable, and among

the more difficult to target. It doesn't model a CPU as you might expect.

It models more so the Java programming language.

  Which includes non-optional safety.

 

 

You'd have better luck probably with mono/CLR, not sure as to the level of portability.

  Mono is pretty widely ported though.

 

 

Really though, gcc+Posix provides a huge amount of portability with very little effort

on our part. The larger work is really obtaining, housing, powering, installing the various systems.

  If you go the C/portable-JIT route, what you really do is you just stop testing

  the various targets, for better and worse, probably perfectly ok.

  Just as nobody tests hello world on every system. They just

  know it works because it is so portable.

 

 
 > webcard, postcard, Deckscape and Webscape and m3-mail packages and m3-lectern 
 

 

They don't compile?

 

 

> > rather old release (5.3.1 if memory serves, 

 

 

You can keep using it?

 

Maybe compare that version to current and see if there are particular problems?

 

 

 > > BTW the version number should figure at a prominent place in every release.

 

 

cm3 -version?

 

 

As to where Tony and I should argue, well, that's not a generally answerable question.

I find that a conversation involving just two people not ideal, no matter who they are.

Being under outside scrutiny increases civility, sometimes add more than two opinions, etc.

 

 

I grant that m3 is such a small community that we don't have an m3-users vs. m3-devel group,

and m3-devel is woefully small, and the two groups a bit inappropriately mixed.

 

 

 - Jay
 
> Date: Sun, 14 Mar 2010 01:54:41 +0000
> From: dabenavidesd at yahoo.es
> To: m3devel at elegosoft.com; dmuysers at hotmail.com
> Subject: Re: [M3devel] bandwith
> 
> Hi all:
> I think is an interesting topic, however I disagree with you in the old version mentioned because since then CM3 has evolved a lot in threading, garbage collection and gcc based backend packages, just to name a few.
> I however seem to recall some discussions, but unfortunately there wasn't sometimes an ending point (i.e my discussion), however without more participation it really becomes boring at one point I expect to be fully honest I do have fun compiling things but probably the community lacks more understanding of the system itself or of the current issues to work in that which needs to be done. Track system by itself is great but probably we haven't used yet in its full potential and that's the reason I waited for so long to report things that would be useful before in ticket trac system (nor I did have the idea to ask you). Current situation in this matter is going better I think.
> Therefore there could be plenty of opportunities of things to work on in a fashionable way if we may.
> I don't know but I think the current stability should be the worrisome and the history of this could go back to C interfaces and son on. I haven't asked yet where are the Unix INTERFACE constants and members which are need for packages that before where compiling that use this low-level style like browsers webcard, postcard, Deckscape and Webscape and m3-mail packages and m3-lectern which I could get to compile some time before this Unix changes.
> However I know that some bugs they had I expect to be gone because this changes brought many other improvements to overall programming environment.
> Besides this, software engineering tools could be made aware of the project like this one done for pm3:
> http://libresoft.dat.escet.urjc.es/cvsanal/pm3-cvs/index.php?menu=Index
> (the manual of it on http://gsyc.es/~carlosgc/files/cvsanaly.pdf software on http://tools.libresoft.es/cvsanaly?rev=1248394389)
> I know there is also a Modula-3 aware re engineering tools it was done by Peter Klien at Aachen University I know there was supossed to be a working prototype at some point available for download
> http://pi.informatik.uni-siegen.de/stt/23_3/05_Dissertationen/klein.pdf
> This kind of tools could be managed to get integrated with M3clipse plugin work done by Bert Laverman which just lacks semantic analysis, and cm3ide which may bundle cvsup and or dcvs as a way of distributed software configuration management and development environment perhaps with Elego Compact (and don't forget Obliq packages, I remember a Professor told me that it competed at some point with JavaScript to be scripting language for the web. It has even type inference algorithm now so who knows why isn't used in our community, I know I will try to get into it but it needs time; there are some examples in Professor's courses that could help to this, besides other things of M3 system level demo applications too)
> Thanks for your comments I hope this helps a bit
> 
> 
> --- El sáb, 13/3/10, Dirk Muysers <dmuysers at hotmail.com> escribió:
> 
> > De: Dirk Muysers <dmuysers at hotmail.com>
> > Asunto: [M3devel] bandwith
> > Para: m3devel at elegosoft.com
> > Fecha: sábado, 13 de marzo, 2010 17:20
> > 
> > 
> > 
> > 
> > 
> > 
> > 
> > I don't know if other
> > people have the same feeling, 
> > but I think that Messrs. Krell and Hosking
> > should keep their polemics to 
> > themselves and let the
> > community partake only 
> > in the result of
> > a constructive consensus.
> > 
> > 
> > As a USER of the m3
> > compiler on windows, I 
> > find the recent developments scary, so I prefer
> > to
> > stick to my installed
> > rather old release (5.3.1 if 
> > memory serves, BTW the version number should
> > figure at a prominent
> > place in every 
> > release.) I am afraid that M3 is going the way of fubar and
> > I
> > am slowly loosing
> > interest.
> > 
> > To make it work for all
> > these different platforms 
> > seems a herculean task
> > and rather 
> > pointless
> > endeavour. Why not use all
> > that energy to 
> > try a radically
> > disruptive strategy such as 
> > a platform
> > agnostic intermediate form
> > targeting a 
> > JIT.
> > 
> > Let
> > me apologize in advance to the whole 
> > community for the present fit of an old men's
> > anger.
> > d.
> > muysers 
> > 
> 
> 
> 
 		 	   		  
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://m3lists.elegosoft.com/pipermail/m3devel/attachments/20100314/40b9144b/attachment-0002.html>


More information about the M3devel mailing list