Category: Uncategorized

  • Spur takes its first steps in Alpha!

    First steps

     

    (baby steps and giant leaps!)

    From Eliot Miranda:

    Hi All,

    it gives me great pleasure to let you know that a spur-format trunk
    Squeak image is finally available at
    http://www.mirandabanda.org/files/Cog/SpurImages/. Spur VMs are available
    at http://www.mirandabanda.org/files/Cog/VM/VM.r2987/.

    Spur is a new object representation and garbage collector for
    Squeak/Pharo/Croquet/Newspeak.

    Features
    The object representation is significantly simpler than the existing one,
    and hence permits a lot of JIT optimizations, in particular allocating
    objects in machine code. This speeds up new, new: et al, but also speeds
    up blocks because contexts and closures are now allocated in machine code.
    It also provides immediate characters, so for example accessing wide
    strings is much faster in Spur, since characters do not have to be
    instantiated to represent characters with codes greater than 255.

    The garbage collector has a scavenger and a global scan-mark-compact
    collector. The scavenger is significantly faster than the existing
    pointer-reversal scan-mark-compact, hence GC performance is much improved.

    The memory manager manages old space as a sequence of segments, as opposed
    to the single contiguous space provided by the existing memory manager.
    The memory manager grows the heap a segment at a time, and can and will
    release empty segments back to the host OS after a full GC. Hence Spur is
    able to grow the heap to the limit of available memory without one having
    to specify the VM’s memory size at start-up.

    The object representation uses “lazy forwarding” to implement become:,
    creating copies of objects that are becommed, and forwarding the existing
    objects to the copies. While Spur still scans the stack zone on become to
    ensure no forwarding pointers to the receiver exist in stack frames (for
    check-free push and store instance variable operations), it does not scan
    the entire heap, catching sends to forwarded objects as part of the normal
    message send class checks, hence following forwarding pointers lazily, and
    eliminating forwarders during GC. The existing memory manager does a full
    memory sweep and compact to implement become. Hence Spur provides the
    performance advantages of direct pointers while providing a significantly
    faster become.

    While Spur uses moving GC (scavenging and compaction on full GC), just like
    the existing memory manager, Spur supports pinning, the ability to stop an
    object from moving. Old space objects will not be moved if pinned.
    Attempting to pin a new space object causes a become, forwarding the new
    space object to a pinned copy in old space. This allows simpler
    interfacing with foreign code through the FFI, since one can hand out
    references to pinned objects in the knowledge that they will not be moved
    by the GC.

    Finally Spur supports ephemerons in a simple and direct way, providing
    pre-mortem per-instance finalization. Although the image-level support
    needs to be written, it should soon be possible to improve the finalization
    of entities such as buffered files (ensuring they are flushed before being
    GCed), etc.

    Future Work
    Spur is as yet a work in progress. The 32-bit implementation is usable and
    appears stable. The major missing component is an incremental scan-mark GC
    that should eliminate long pauses due to the global scan-mark-compact GC
    (which is still invoked at snapshot time). I hope to start on this soon.
    But another key facet of Spur is that the object header format and the
    sizes of objects are common between 32- and 64-bits. In 32-bit and 64-bit
    Spur, object bodies are multiples of 8 bytes, so there may be an unused
    slot at the end of a 32-bit object with an odd number of slots. Hence Spur
    is close to providing a “true” 64-bit system, one with 61-bit
    SmallIntegers, and 61-bit SmallFloats (objects with the same precision, but
    less range that 64-bit Float, done by stealing bits from the exponent
    field). I look forward to collaborating with Esteban Lorenzano on 64-bit
    Spur and hope that it will be available early next year.

    Experience
    I am of course interested in reports of performance effects. Under
    certain, hopefully rare circumstances, Spur may actually be slower (one is
    when the number of processes involved in process switching exceeds the
    number of stack pages in the stack zone). But my limited experience is
    that Spur is significantly faster than the existing VM. Please post
    experiences, both positive and negative.

    Finally, caveat emptor! This is alpha code. Bugs may result in image
    corruption. If you do use Spur, please try and back up your work just in
    case. And if anything does go wrong please let me know, preferrably
    providing a reproducible case.

    Enjoy!
    Eliot Miranda

  • Injected, Inspected, Detected, Infected, Neglected and Selected

    AlicesRest

    Howdy!

     

    If you want to know some cool history of Smalltalk, and perhaps this is a strong argument in actually *being* a Smalltalk and not trying to distance yourself from that rich and lovely heritage…. anyway, here goes:

     

    On 04/28/2014 08:14 PM, Alain Busser wrote:

    > Also, Ruby is famous for these methods:

    > *select

    > *reject

    > *collect

    > do these names not remind you something 😉 ?

     

    There is a funny story about these verbs. Martin McClure told me at ESUG in Brest to ask Dan Ingalls about it, hinting that they are “inspired”

    by a famous song.

     

    And thus I did ask Dan in my interview with him I did a few years back over Skype (it is an interesting interview, for example – was there an inspiration from biology when Smalltalk was created?):

     

    http://files.krampe.se/interview.mp3

     

    …the song in question is by Arlo Guthrie:

     

    http://en.wikipedia.org/wiki/Alice%27s_Restaurant_Massacree

     

    …and here is a URL to the lyrics of it:

     

    http://www.lyricsty.com/arlo-guthrie-alices-restaurant-lyrics.html

     

    (search down to “injected”!) …or just let me quote:

     

    “They got a building down New York City, it’s called Whitehall Street, Where you walk in, you get injected, inspected, detected, infected, Neglected and selected. I went down to get my physical examination one Day, and I walked in, I sat down, got good and drunk the night before, so I looked and felt my best when I went in that morning.”

     

    …now… where do we stuff in #neglect:? 🙂

     

    regards, Göran

  • 7-point summary of the Spur memory manager

    cogs

    From Clément’s post to the pharo community:

    Hello pharoers,

    The new Cog memory manager, Spur, is simply *amazing*. I saw at FOSDEM that some of you were interested in it, but unfortunately you were lacking information about it.

    I wrote a one page article that sums up Spur’s new features so every one can know what will be better. There’s no VM technical details here, it’s just about what will change for a regular pharo user.

    http://clementbera.wordpress.com/2014/02/06/7-points-summary-of-the-spur-memory-manager/

    Let me know if you think I forgot yet another feature.

    If you have questions, I’ll try to answer, but ask Eliot, he implemented Spur so he can answer your questions much better than I can :-).

    Regards,

    Clément

  • Squeak 4.5 Release Candidate 1

    squeakiscool

    From: Chris Muller:

    It’s ready for your final testing and scrutiny!

    http://ftp.squeak.org/4.5alpha/Squeak4.5-13663.zip

    Please bang on this!  Test it with your apps.  Test it in Windows, iOS, Linux.  Interpreter and Cog.

    Unless we hit any show-stoppers, this will be the one we can call “done.”

    Thanks to this great community of brilliant developers for making 4.5 a superb release.

  • Squeak needs you!

    help-wanted

     

    It’s time to encourage our best community members to step up and serve.  Put your name in the race and get elected to the Squeak Oversight Board.  Talk to people – you know who they are – that really should run.

    From Tim:

    Being on the board is not an onerous job. It does not require exotic technical skills. What it does need is an interest in caring for how the Squeak world keeps going, some time to take part in discussions and occasional debates about what ought to be done with the organisation, and a large cellar of excellent vintages to share when the expansive travel budget provides for a meeting to be held in your chateau. Some of the aforementioned might be exaggeration.

    Many of the regulars at posting here [squeak-dev] could be excellent board-members. Please, take a moment to consider running.

  • SqueakJS: A Lively Squeak VM

    Bert VM Icon  on      javascript

    SqueakJS-Lively

    Smalltalk on Javascript.  Are you ready for this!!

    From Bert:

    I’m proud to announce SqueakJS, a new Squeak VM that runs on Javascript

    http://bertfreudenberg.github.io/SqueakJS/

    It was inspired by Dan’s JSqueak/Potato VM for Java, and similarly only runs the old Squeak 2.2 mini.image for now. But I developed it inside the Lively Kernel, which allowed me to make a nice UI to look inside the VM (in addition to all the Lively tools).

  • Code.org Scratch that itch

    Scratch on Pharo

    From: S Krish posted to Pharo-dev

    Really Cool…. all the power to see it work perfect with all bells n whistles..

    http://learn.code.org  has a cool run through in scratch on the browser..  One hour lesson for beginners and many already are on to it.

  • Scratch for Arduino (S4A)

    What happens when you mix Scratch

    s4a

    with Arduino

    Arduino316

    Answer: You get

    s4aLogo

     

    “S4A is a forked version of Scratch proper. The sprites and animating tools are still there, but there are also digital/analog I/O blocks, motor controls, and streaming updates from the analog inputs.

    S4A differs quite a bit from ArduBlock. It uses a firmata-type of protocol to interface between actual executed code and the Scratch program you’ve drawn up. There are pros and cons there: Written code takes effect instantly, but you’re always tethered to the USB port. For any kids who are already better Scratch creators than I’d ever be (which is a lot, judging by what we’re seeing on the tour), S4A is a perfect sidestep over into the physical world.”

    See details here:  https://www.sparkfun.com/news/1291

    From more on S4A see: http://s4a.cat/

     

  • Spur’s First Window

     

    SpurItsAlive

    Ben said it perfectly:

    “A cheer goes up in the crowd of interested spectators.

    Probably lots still to do, but its a nice concrete milestone.”

    More info here: http://lists.squeakfoundation.org/pipermail/vm-dev/2013-October/013903.html