GNU Smalltalk

GNU Smalltalk is a Smalltalk interpreter and libraries.
Download

GNU Smalltalk Ranking & Summary

Advertisement

  • Rating:
  • License:
  • GPL
  • Price:
  • FREE
  • Publisher Name:
  • Paolo Bonzini
  • Publisher web site:
  • http://www.gnu.org/software/lightning/lightning.html

GNU Smalltalk Tags


GNU Smalltalk Description

GNU Smalltalk is a Smalltalk interpreter and libraries. GNU Smalltalk is an implementation that closely follows the Smalltalk-80 language as described in the book Smalltalk-80: the Language and its Implementation by Adele Goldberg and David Robson, which will hereinafter be referred to as the Blue Book.Smalltalk programming language is an object oriented programming language. This means, for one thing, that when programming you are thinking of not only the data that an object contains, but also of the operations available on that object.The object's data representation capabilities and the operations available on the object are "inseparable"; the set of things that you can do with an object is defined precisely by the set of operations, which Smalltalk calls methods, that are available for that object: each object belongs to a class (a datatype and the set of functions that operate on it) or, better, it is an instance of that class.You cannot even examine the contents of an object from the outside--to an outsider, the object is a black box that has some state and some operations available, but that's all you know: when you want to perform an operation on an object, you can only send it a message, and the object picks up the method that corresponds to that message.In the Smalltalk language, everything is an object. This includes not only numbers and all data structures, but even classes, methods, pieces of code within a method (blocks or closures), stack frames (contexts), etc. Even if and while structures are implemented as methods sent to particular objects.Unlike other Smalltalks (including Smalltalk-80), GNU Smalltalk emphasizes Smalltalk's rapid prototyping features rather than the graphical and easy-to-use nature of the programming environment (did you know that the first GUIs ever ran under Smalltalk?).The availability of a large body of system classes, once you master them, makes it pretty easy to write complex programs which are usually a task for the so called scripting languages. Therefore, even though we have a nice GUI environment including a class browser, the goal of the GNU Smalltalk project is currently to produce a complete system to be used to write your scripts in a clear, aesthetically pleasing, and philosophically appealing programming language. Installling:The first thing to do to compile GNU Smalltalk is to configure the program, creating the makefiles and a `gstconf.h', which contains guesses at the system's peculiarities. This configuration is performed automatically by the `configure' shell script; to run it, merely type: ./configureOptions that you can pass to configure include --disable-dld, which precludes Smalltalk programs from dynamically linking libraries at run-time.After you've configured GNU Smalltalk, you can compile the system by typing:makeSmalltalk should compile and link with no errors. If compiling goes wrong you might want to check the commands used to launch the compiler. For example, be sure to check if your compiler has extensions which, if not enabled, don't make it ANSI compatible. If this is the case, typemake distcleanCFLAGS=needed command-line flagsand retry the configure/make process. In very particular cases, the configure script might miss the presence of a header file or a function on your system. You can patch the `config.cache' file created by the configure process. For example, if configure did not find your `unistd.h' header file, change the line readingac_cv_header_unistd_h=${ac_cv_header_unistd_h='no'}toac_cv_header_unistd_h=${ac_cv_header_unistd_h='yes'}and, again, retry the configure/make process.The last lines of the make output should be like this:export SMALLTALK_KERNEL=`cd ./kernel; pwd`; ./gst -iQ dummy_filemake: Leaving directory `/home/utente/devel-gst'make: Leaving directory `/home/utente/devel-gst'At this point, you have a working GNU Smalltalk. Congratulations!!!You will also want to store the Smalltalk sources and create the image file in the proper place (the image file contains a full snapshot of the status of the system). This is done automatically when you do a make install. Specifying --enable-modules as an option to configure will load Smalltalk packages in the automatically installed image. For example./configure --enable-modules=Blox,TCPwill create an image with the Blox user interface toolkit and the TCP abstraction library built-in.Here are some key features of "GNU Smalltalk":· Memory accessing methods· Namespaces· Disk file-IO primitive messages· The GNU Smalltalk ObjectDumper· Special kinds of object· The context unwinding system· PackagesNote that, in general, GNU Smalltalk is much more powerful than the original Smalltalk-80, as it contains a lot of methods that are common in today's Smalltalk implementation and are present in the ANSI Standard for Smalltalk, but were absent in the Blue Book. Examples include Collection's allSatisfy: and anySatisfy: methods and many methods in SystemDictionary (the Smalltalk dictionary's class).What's New in 3.0.4 Stable Release:· A few operations on collections have been sped up.· Code without a space between a binary minus and a number, such as "a-2", is parsed correctly. Sockets use the close-on-exec option.· Bugs were fixed regarding pipes, FIFO files, nested exception handlers, virtual filesystems, HTTP, bytecode optimization, Stream iteration, and the Windows port.What's New in 3.0c Development Release:· Error backtraces include line numbers and filenames.· FileDescriptor is now a subclass of Stream, and the old superclass ByteStream has been removed.· Some functions exported by the VM to plugin modules are now thread-safe.· Stream operations try to eliminate useless copies and garbage collections when moving data from stream to stream.· Support for imports was added to namespaces.· The sockets package was renamed from TCP to Sockets as it now supports IPv6 and AF_UNIX sockets (in the Sockets package).· Bindings to OpenGL and GLUT were contributed.


GNU Smalltalk Related Software