Category: Squeak

  • The Return of the Connectors

    Chris Muller has recently updated Connectors to work with Squeak 4.2 images. Connectors gives you the ability to turn Morphic into a drawing environment for making connected diagrams. This tool was developed by Ned Konz many years ago and hasn’t been able to load in an up-to-date image for some time.

    A Connector is a Morph that looks like a line and has a constraint on either end that keeps the ends attached to some other Morph. You can specify properties such as width, borders, fills, end-decorations for each connector, as well as determining the path the connector takes and what labels it should have. The package also comes with other tools to aid in the creation of smart drawings. See the tutorial for more information.

    The updated package is available on SqueakSource.

  • New tools for Squeak

    The staff and students at the Hasso Plattner Insitute have set up a new site to share the impressive work they are doing using Squeak. The projects they are showcasing include some gorgeous UI Widgets and a new UI Designer (shown above).

    Each project is available at the Institute’s SqueakSource server, and can be loaded using Metacello configurations.  All configurations were tested and run in the current Squeak (Trunk) versions (4.1, 4.2). The site is built using Trac project management software, which provides for issue/bug tracking if you do find any problems.

    Many thanks to the Software Architecture Group, led by Prof. Dr. Robert Hirschfeld at the Hasso Plattner Insitute (University of Potsdam), for sharing these great projects.

    (Note that Firefox currently gives a warning about the site due to an incomplete certificate chain, but this should be fixed soon).

  • Hear the Mouse Roar on Multi-Core!

    Stefan Marr has just announced on his blog the relase of RoarVM, the first single-image manycore virtual machine for Smalltalk. RoarVM is based on the work on Renaissance VM by David Ungar and Sam S. Adams at IBM Research, and was ported to x86 architecture by Stefan.

    From his post: “The RoarVM supports the parallel execution of Smalltalk programs on x86 compatible multicore systems and Tilera TILE64-based manycore systems. It is tested with standard Squeak 4.1 closure-enabled images, and with a stripped down version of a MVC-based Squeak 3.7 image.” Support for Pharo 1.2 is currently limited to 1 core, but this is being worked on!

    Here’s some indicative figures for this new VM (using an adapted version of tinyBenchmarks on an MVC image):

     1 core   66M bytecodes/sec;  3M sends/sec
     8 cores 470M bytecodes/sec; 20M sends/sec

    As Stefan notes “The RoarVM is a research project and is not as optimized for performance as the standard Squeak VM”. For comparison:

    Squeak 4.2.4beta1U, MVC image, OS X 555M bytecodes/sec; 12M sends/sec

    so you’ll need a few cores active before you start to see improvements over your existing image! There are also a number of known issues with the current implementation.

    You can download the code from the RoarVm page at GitHub, contribute to the discussion on the vm-dev mailing list, or follow #RoarVM updates on Twitter.

  • Tab Completion returns to Squeak

    Levente Uzonyi is obviously one of a number of people who have been quite envious of the built-in tab-completion in Pharo, so he’s put in the work required to make OCompletion work on Squeak images again. OCompletion works in two ways: it offers a short list of automatic completion hints as you type based on your recent activity, or you can bring up the fuller (classic eCompletion) list by using the tab key, and use the up and down arrow keys to navigate the list and the right arrow to reveal syntax-highlighted source code for the methods listed.

    OCompletion is a re-working of the venerable eCompletion package, based on research done by Romain Robbes and Michele Lanza. It is aware of the current context as you type, and so offers suggestions from your current area of work e.g. class, package etc. This means that it responds much more quickly than eCompletion based on the complete image code base. It also adds a number of look-and-feel enhancements that make it a perfect fit with the current appearance of Squeak.

    To try it out, just evaluate the following script in your image:

    Installer squeaksource
     project: 'RoelTyper';
     install: 'RoelTyper-FredericPluquet.82';
     project: 'OCompletion';
     install: 'OcompletionSqueakCompatibility-ul.1';
     install: 'Ocompletion-ul.67'.

    Useful notes:

    • Check out the squeaksource page for OCompletion to review latest versions of Levente’s code
    • Default behaviour is to switch on the ecompletionSmartCharacters preference, which results in auto-typing of matching [], (), {}, “”, ” characters. Some people may wish to switch off this preference.

    Thanks to Levente for making this handy tool available in Squeak again!

  • Seaside 3.0 released

    Following some last minute work at this year’s second Camp Smalltalk event, the Seaside developers are pleased to announce the release of Seaside 3.0 on the eve of the ESUG 2010 Conference in Barcelona.

    Seaside has undergone a total overhaul, with many classes having been refactored to reduce complexity, decrease coupling, and improve flexibility. The packages in Seaside are now cleanly defined with clear relationships and interdependencies, allowing you to load only those pieces you require. There are improvements in testing, in portability and in performance, as well as much better tools for developers including the Seaside Control Panel for Pharo and Squeak, and the web-based administration interface.

    For more information, see the Seaside 3.0 release announcement, or the following links:

    Seaside 3.0 Detailed Release Notes
    http://seaside.st/community/development/seaside30

    Seaside One-Click Experience 3.0 (runs with one-click on Mac, Windows and Linux)
    http://www.seaside.st/distributions/Seaside-3.0-final.app.zip

    Seaside 3.0 Developer Image 3.0 (for Pharo developers)
    http://www.seaside.st/distributions/Seaside-3.0-final.zip

    SqueakSource Repository for Seaside 3.0
    http://www.squeaksource.com/Seaside30.html

  • Seaside 3.0rc – One Click Image

    Following on from the recent release of the Seaside release candidate for 3.0, a Squeak “One-Click” image has been put together to allow you to try out the new version with—er—one click!

    The new image is based on Squeak 4.1, and launches fully configured with Seaside running with Comanche on port 8080, so you can immediately see the new improved Seaside welcome page at http://localhost:8080/, with links to documentation and the Seaside book.

    Seaside’s 3.0 release is faster, cleaner, better tested and has many other changes and improvements over previous releases, so it’s well worth checking out this release candidate now.

  • A newer, faster computer – for free!

    Eliot Miranda has announced that his new Cog VM is now available for download, bringing Just-In-Time compilation and massive speed-ups to Squeak and Pharo.

    If you’ve been following Eliot’s blog, you’ll know that he’s been working on this new VM for quite a few months now; well, it’s now ready for public consumption, and it’s blisteringly fast: up to three times faster than the existing VMs.

    The VM selectively re-compiles code to native (Intel) machine-code, based on the size and complexity of the methods, and how often they’re called. This means that the benefits of the new VM vary from task to task, but Andreas Raab estimates that you should expect a 2-3x performance improvement generally, “more towards 2x when running primitive and I/O-bound stuff; more towards 3x when running ‘pure’ Smalltalk code”.

    Eliot is interested in hearing from developers on other platforms who want to port the new VM to those platforms. In the meantime, he has also released the “Stack VM”, a cross-platform interpreter that uses context-to-stack mapping to achieve more modest performance gains.

    See Eliot’s original post and the following discussion for more details of the new VM, some notes of caution, and how to get your hands on it and use it.

    Thanks to Eliot for this great piece of work, and to Teleplace who have funded this work (and have been using it for the past year), and have agreed to release the new VM’s under the MIT Licence.

  • Squeak running on iPad

    Bert Freudenberg has recently got Squeak working on the iPad, and has the video to prove it!

    Bert’s work is based on John McIntosh‘s original port of the Squeak Virtual Machine to Apple’s touch-based OS, modified slightly to enable multi-touch and keyboard input. Bert also added multi-touch handling to Morphic. Interestingly, he notes that “Morphic was designed to handle multiple ‘hands’ (pointing devices) from the beginning”, so Squeak has always been multi-touch capable, and just let down by operating systems until now!

    Bert’s work will help the Etoys team prepare their application for the next machine from OLPC, the XO-3, which will also be a touch device. The new version of the Sugar OS for the new device is still being developed, so it looks as though Etoys is well ahead of the curve.

    Given the recent changes to Apple’s licence terms for iOS developers, it’s looking increasingly likely that we will see Squeak-based applications appearing for the iPad in the future. After a forty year wait, the Dynabook is nearly here!

  • JNIPort: Running Java from Squeak

    Joachim  Geidel has published a preview release of JNIPort, a Smalltalk library which allows Java code to be invoked from Smalltalk. It acts as a bridge between the world of Smalltalk objects and a Java Virtual Machine (JVM) where Java code is executing.

    The port to Pharo and Squeak is not yet finished: it lacks support for callbacks from Java to Smalltalk, and is a work in progress. Joachim is particularly interested in feedback from Squeak 4.1 users.

    JNIPort was originally written by Chris Uppal for Dolphin Smalltalk and published under a liberal licence which permits its use in commercial and non-commercial software. Joachim Geidel originally ported JNIPort to VisualWorks in 2006 and is now building on that work to make it available to Pharo and Squeak. The goal is to publish a stable release for VisualWorks, Pharo and Squeak in Q3/2010.

    In addition to giving Smalltalk programs access to Java libraries and services, the interactivity of Smalltalk makes it an ideal environment to experiment and prototype new Java functionality.

    Once it’s installed, calling some Java can be as simple as three lines in your workspace:

    jvm := JVM current.
    class := jvm findClass: #’java.lang.System’.
    class currentTimeMillis_null

    Installation instructions documentation and much more information are on the JNIPort Wiki.

  • All you ever heard about graphics anti-aliasing is wrong!

    Juan Vuletich has been working for some time on Morphic 3, a research and development project aimed at building the next standard in 2D user interfaces. One of his aims is to do mathematically proved alias-free rendering. In order to achieve these objectives, he has been experimenting with several techniques and design features, some which are new and others are not, but have never been consistently applied to a 2D GUI.

    Juan’s contention is that, although the theory behind sampling is about 80 years old, existing graphics software completely ignore the theory and that his quest for higher quality results has resulted in the idea of applying the Sampling Theory which allows for mathematically proved alias free rendering. He informed the squeak-dev mailing list of his latest post which makes the startling claim that “I developed new drawing algorithms that give better results than those in Cairo, AGG, etc.” and he has created some examples showing some of the problems with existing algorithms, and how his approach improves these issues.

    Juan is preparing the algorithms for release, which will involve him publishing it in a  journal or as a Ph.D. thesis, and securing it for free use by either putting the code in the public domain or releasing it under the MIT licence.

    Juan’s work on Morphic 3 is supported by ESUG’s Support Your Project programme.