It's been pretty quiet on this list, so I thought I'd start a
conversation to see if the list is working. Anyone doing any
interesting Self work?
I sidelined my VNC client in Self for a bit due to getting busy in my
day job but plan to get back to it soon and finish it off. It's pretty
close. The missing part is mostly key handling.
I'd like to tidy up my Android patches too and get them submitted so
at least Intel android would work out of the box.
What do people feel would make Self more viable as a fun project to hack on?
--
http://www.bluishcoder.co.nz
12
61
Pooi REL
by Baltasar García Perez-Schofield
28 May '16
28 May '16
I've added a new video about Pooi in pure console mode, just text, from
within the same jar. So, you can execute it with gui or without it. Just
add --nogui to the parameter list. Also Pooi is very verbose, so verbosity
is also modifyable from the command line with switch --quiet.
The Pooi youtube channel:
https://www.youtube.com/playlist?list=PLqgK8lsizKAzuuvSjfWd8iwoHsBGhY2ak
The Pooi Read-Eval-Loop pure console text & other goodies:
https://www.youtube.com/watch?v=92C_V7zdj78
Example:
==
$ java -jar Pooi.jar --help --nogui
--version Shows version information
--nogui Starts a console interpreter
--quiet No verbosity
--help This help
Welcome to Pooi ("os exit" to exit)
> os exit
==
Hope you enjoy them!
-- Baltasar
Following the advice of Prof. Ungar, I have improved the visual
characteristics of Pooi, you know, my own little object-oriented
interpreter implementing the model of prototypes.
Hope you like the videos!
The new object inspector:
https://youtu.be/3MX4vukbflA
Explaining inheritance by delegation:
https://youtu.be/FkuqkLRKVgs
-- Baltasar
If you startup the VM from the command line, you will get something like this as the first line:
Self Virtual Machine Version 4.1.13, Sun 15 May 16 17:34:42 Mac OS X i386 (4.5.0-101-g6e1af6f)
This version number looks like it might be some sort of semantic versioning system (semver.org) or at least a major-minor-patch type of thing.
However, it really is Major.Minor.SnapshotVersion
In universe.cpp, the versions are set up:
// increment VM_snapshot_version whenever old snapshots will break; reset
// it to zero when changing the minor or major version
smi VM_major_version = 4;
smi VM_minor_version = 1;
smi VM_snapshot_version = 13;
but this comment is I think wrong, because the code only ever looks at the snapshot_version when determining loading a snapshot.:
// return for snapshots whose version matches the current snapshot version
if (snapshot_version == VM_snapshot_version)
return;
// Between snapshot versions 10 and 11, a new primitive was added: CompileWithSICNames.
// To maintain compatibility, and since there's only a minor addition, we also read
// snapshot whose version is 10. -mabdelmalek 11/02
bool can_read_snapshot_with_mismatched_version =
(snapshot_version == 10 && VM_snapshot_version == 11)
|| ((snapshot_version == 10 || snapshot_version == 11) && VM_snapshot_version == 12)
|| ((snapshot_version == 12) && VM_snapshot_version == 13);
if (can_read_snapshot_with_mismatched_version)
warning6("\n\tThis snapshot was saved using a different version\n"
"\tof the Self Virtual Machine (%d.%d.%d) and may behave unexpectedly\n"
"\tor not work correctly with this version (%d.%d.%d).\n",
read_major_version,
read_minor_version,
snapshot_version,
VM_major_version,
VM_minor_version,
VM_snapshot_version);
if (!can_read_snapshot_with_mismatched_version)
fatalNoMenu6("\n\tThis snapshot was saved using a different version\n"
"\tof the Self Virtual Machine (%d.%d.%d) and will not\n"
"\twork with this version (%d.%d.%d).\n",
read_major_version,
read_minor_version,
snapshot_version,
VM_major_version,
VM_minor_version,
VM_snapshot_version);
So if I increment the minor_version and reset the snapshot_version to 0, then the version checking will have to start looking at all the components, not just the snapshot_version.
We should do a new release soon. This should include a newly built VM and to distinguish it there should be a new VM number.
So what should we number it?
4.2.0 and change the version checking code?
4.2.13?
4.1.14 and make it read .13 snapshots?
2016.1/13?
2016.1/14?
:) Russell
1
0
Pooi 1.3
by Baltasar García Perez-Schofield
13 May '16
I'm interested in using JavaScript with the style Self uses: prototypal inheritance, not classical. This is a common issue in the JS community. What's lacking is understanding of the core Self "magic", why it's so successful.
I asked about this as an Issue on Self's github page:
https://github.com/russellallen/self/issues/57
.. and was pointed to this mail group.
JS has good support for prototypal techniques. And several "champions" of its use. (Eric Elliot and Kyle Simpson are the best known)
Eric: The Two Pillars of JavaScript
https://goo.gl/u7uRV7
Kyle: JS Objects: Inherited a Mess
https://davidwalsh.name/javascript-objects
..see Part 3 for diagrams: scroll too "The Whole Pie" & "Looks are everything"
What it doesn't have is a Self-oriented guide, how to tease out of JS the success of Self.
Specifically, I'm rebuilding http://agentscript.org from a JS dialect CoffeeScript to the newest version of JS, es6. I'm attempting prototypal inheritance but I bet I'm missing a lot!
Any pointers to successful prototypal usage that would help JS succeed?