Asm sources in Self currently use assembler's macro facilities that
differ between clang and gas. Recent versions of clang asm is gas
compatible, but then as far as I understand apple's clang is special.
llvm's asm behaves differently if "IsDarwin" and the current llvm
macro code in Self is effectively apple-only.
I'm working on a NetBSD port and NetBSD supports both gcc and clang as
system compilers. I will porbably look at the FreeBSD port too and
FreeBSD is now clang only, afaik. This makes it a bit painful to work
with the current asm sources.
Would there be any objections to switching Self i386 asm sources to
use the C pre-processor? NetBSD has been doing that for ages (for a
large zoo of CPUs) and it's quite ok.
Some examples
https://github.com/NetBSD/src/blob/trunk/sys/arch/i386/include/asm.hhttps://github.com/NetBSD/src/blob/trunk/lib/libc/arch/i386/SYS.h
just to give a general idea of what it looks like. So, e.g.
start_exported_function currentFrame
will just become
start_exported_function(currentFrame)
Or
MACRO(ret_prim_error, error_code)
...
ret_bad_type: ret_prim_error badTypeOffset
will be
#define ret_prim_error(error_code) \
... ; \
...
ret_bad_type: ret_prim_error(badTypeOffset)
-uwe
Hi everyone,
It looks like we should be able to do a release in the reasonably near
future of the Self VM compiled for Linux, FreeBSD and NetBSD and maybe
Cygwin (but probably not Mac), thanks to some work by nbuwe and rockwalrus.
See https://github.com/nbuwe/self/tree/feature/netbsd-i386
<https://github.com/nbuwe/self/tree/feature/netbsd-i386>
And https://github.com/rockwalrus/self/tree/cygwin
<https://github.com/rockwalrus/self/tree/cygwin>
(these will need to be harmonised)
But to do that, I need a decent automated build for each platform so I'm
not manually mucking around with virtual machines etc.
I can't see anyone doing all those OS as a service (mostly they're just
Linux+MacOS maybe Windows).
Any suggestions on how to go about this? Surely there is an existing thing
I can just use :)
Cheers
Russell
"I’ve been reading a bunch of old papers from the Self project. It’s pretty incredible how many things they invented that are absolutely essential in modern, high-performance managed language runtimes. It might be the most influential programming language that most programmers have never heard of…”
https://dubroy.com/blog/self/
For the first UKSTUG online meeting of the year, Stéphane Rollandin will
talk to us about muO: musical objects for Squeak (
http://www.zogotounga.net/comp/squeak/sqgeo.htm ).
The presentation will focus on some of the interactive tools and subsystems
widely used in muO, that are of interest in their own right, and
potentially useful to others.
The main emphasis will be on the large family of zoomable fields, which are
modular plotting editors. Stéphane will demonstrate the workflow they are
designed for, and show in what sense it is a seamless and natural
exploitation of the Morphic framework.
The code for these tools is somewhat entangled with the muO package, so
Stéphane will also provide a Squeak image taylored to help people find
their way there.
Stéphane Rollandin has been doing independent research on software for
musical composition and representation for the last 20 years, during his
whole careeer as a stay-at-home father.
After developing the GeoMaestro system for KeyKit, and the Csound-x package
for Emacs, he was introduced to Smalltalk and never looked back. Besides
muO, he developed for Squeak a modular Lisp interpreter, the
LambdaMessageSend framework and a few games. He is now working on an
experimental game engine with an emphasis on procedural generation and
complex autonomous agents.
He was formally educated in physics, and his other artistic ventures are in
photography and aikido. His music is freely available online (
https://stephanerollandin.bandcamp.com/ ).
Born in Marseille, he currently lives in the southern French Alps.
This will be an online meeting from home.
If you'd like to join us, please sign up in advance on the meeting's Meetup
page ( https://www.meetup.com/ukstug/events/290746320/ ) to receive the
meeting details.