Imagine taking a Ford engine, a Chevrolet chassis, and a Toyota transmission, bolting them together, and discovering that they fit perfectly. In the programming world, Rodrigo Barreto de Oliveira created such a vehicle. Around the year 2003, de Oliveira was unhappy with some of the .Net/Mono languages at the time because none of the stable ones were Python-like.
De Oliveira said that he missed the "wrist-friendly" Python syntax. He created his own language, Boo, and explains in the Boo Manifesto [pdf]: "I wanted a language I could extend with my own constructs. I wanted a compiler system that could be taught new things, taught how to automagically [sic] generate common code for me." The language caught on, and several sites hosted Boo projects or created communities around it.
Boo is an object-oriented, statically-typed programming language that makes use of the .Net Common Language Infrastructure. It is licensed under an open-source MIT/BSD-style license, and because it is built upon the Mono or Microsoft .Net framework, it is cross-platform and can be extended significantly. Boo supports Unicode, internationalization, and web-style applications while its language's syntax is Python-inspired. Focusing on both language and compiler extensibility, it features type inference, optional duck typing, currying, first class functions, multimethods, and generators.
The language is quite flexible and adapts to many genres of programming. It can be used in or written for games, GUI applications and web frameworks (see the Boo Applications). It can interact with most Mono libraries, every CLS-compliant library and most generics. In short, it works with pretty much everything, every library, and every framework for .Net or Mono. In the game world, BooGame (a 2D, OpenGL-accelerated, game engine framework) is similar, if not almost equivalent, to PyGame.
The commercial Mac OS X Unity game engine has very good support for Boo scripting for both 2D and 3D games. With Unity, Boo games can even be played from a browser. Unity is not the only 3D framework that supports Boo. The open source Tao framework supplies OpenGL, Ogre, and OpenAl bindings for Boo on both .Net and Mono. Although not too many web frameworks have been written for Boo, Apache's mod_mono makes web development possible. A popular framework is Webbness, which delivers functionality similar to Ruby on Rails and it generates code in either Boo or C#.
There are several reasons to use Boo over other languages, even though many others (such as Lua) may have a larger community, have a larger software base, or may be in the news more often. Boo stands out from the crowd since it is appealing to developers due to its simple syntax and well implemented OOP functionality on the .Net/Mono platform. It differs from IronPython in several ways because it can provide features and tools that IronPython might never support (due it its very good compatibility with standard CPython).
Unlike some languages, Boo is not designed to replace or be used exclusively as an alternative to C#. Instead it was designed to be extended and to interact with those languages. This allows the programmer to write once in a different languages, and use his code with Boo. In the Boo Manifesto, de Oliveira explains why he created the language. "When I was programming in full Python mode I missed some of the things I'd normally get from a more statically typed environment." He goes on to say, "what I missed the most was the well thought out .net architecture and its great support for Unicode, globalization and web style applications."
Just recently Boo 0.7.7 was released, touting new features primarily involving support for consuming generic methods. For example, in Boo 0.7.6 one could only use generics with external types. Boo 0.7.7 improved generics support, allowing the programmer to use generics with internal types (which are defined in the Boo assemblies that are to be compiled). It also improved the verify pipeline, making it available on Mono (the pipeline in 0.7.6 only worked well in .Net) and optimized string handling (allowing the coder to generate Gendarme/FXcop-compliant assemblies). Type inference (which is a work in progress) was improved and the release fixed a handful of bugs, mostly inconsistencies in the Boo compiler.
Boo releases come frequently (see the Boo Release Schedule). The team uploads a new sub-release every month to fix bugs and add a few features. The next major version, Boo 0.8, is in active development and the team is working on improving the compiler even more. Although there isn't much information on the upcoming 0.8 release, the bug tracker has some reported issues with the improved lexical and method syntax as well as some interpreter and duck typing improvements.
Boo was created to fill gaps in Python in order to make a programmer's job even easier. Its syntax makes programming a breeze and it can be extended to work in dozens of scenarios. Whether one wants to create a game, a web site or a GUI application, Boo can lighten the load. The programmer can concentrate on nitty-gritty programing in a different language, while Boo effortlessly interacts with that language. Almost every other module can be found in the .Net/Mono framework.
Embedded SystemsBusyBox, a collection of command line utilities for embedded systems, is out with the following changes: "This is a bugfix-only release, with fixes to hdparm, hush, ifupdown, ps and sed."
TelecomEds-sync is the component that synchronizes remote Telepathy rosters (= instant messaging contact list stored on server) to a local evolution-data-server. After initial synchronization, it keeps the rosters in sync with the local addressbook. It currently will only work correctly with the Nokia specific eds-dbus, and it requires the addressbook UI components to do some special actions too."
Web Site DevelopmentChandler Server is a database, server, and web UI for storing and managing personal information such as events and tasks. It implements standards such as CalDAV, WebDAV, Atom, and Atom Publishing Protocol." This architectural release targets Zope 2.10 and higher and takes advantage of much of the new technology. Infrae has striven to keep Silva 2.0 almost feature identical to Silva 1.6, while refactoring and rebuilding large parts of the system under the hood, using advances in Zope and Five infrastructure. This major reworking should especially help extension developers by expanding the set of tools available to them."
Audio ApplicationsAudacity audio editor has been released. "The Audacity Team is pleased to announce the release of Audacity 1.3.3 (beta), which contains numerous new features and capabilities beyond the 1.3.2 (beta) release. Because it is a work in progress and does not yet come with complete documentation or translations into foreign languages, it is recommended for more advanced users." eSpeak, a text to speech synthesis converter, is out with improvements to the French, Czech, Slovak, Norwegian, Croatian, and Portuguese language support. jack_mixer is GTK (2.x) JACK audio mixer with look similar to it`s hardware counterparts. It has lot of useful features, apart from being able to mix multiple JACK audio streams. Changes since version 4: fix building against older jack versions (i.e. not latest svn)" The nasty bug that maximum volume wasn't reachable after moving the slider is gone. Made it useless. Didn't see that... The interface is prepared for knob resizing. If you use phat svn sources change the KNOB_SIZE in mixdesk_gtk.c to maybe 32. You'll also get scroll support." This has been one of the longest release periods in the history of XMMS2. A lot of big changes has been merged, including the long awaited Collections API. We have also switched to a new build-system. The XMMS2 Team would like to extend a big THANK YOU to all who have helped out with this release, a lot of bug testing and bug fixing by new faces has been seen. Hope to you all around for the next release!"
Desktop EnvironmentsThis is our second development release on our road towards GNOME 2.20.0, which will be released in September 2007. New features are still arriving, so your mission is simple : Go download it. Go compile it. Go test it. And go hack on it, document it, translate it, fix it." This release includes all of GNOME 2.19.2 plus a bunch of updates that were released after the GNOME freeze date. This is the second release in the unstable cycle, with more features, more fixes and yet more madness added. It is for anyone who wants to get his hands dirty on the development branch, or who'd like to get a peek at future features. If you want to help spot issues in GARNOME, (or, better yet, fix 'em ;-) this release is for you as well."
Desktop PublishingCompared with the previous beta release we have fixed several bugs and added some improvements, namely a new inset to support code listings. We have enabled the converter file cache by default. Internally we have renamed files to follow a consistent name pattern, this will allow an easier navigation of the source code thus simplifying bug fixing. Compared with the latest stable release, this is the culmination of one year of hard work, and we sincerely hope you will enjoy the results." has been released, this release includes Focus Feature enhancements and minor bug fixes. "WIKINDX is a free single or multi-user research environment storing searchable bibliographies, notes and citations and integrated with a WYSIWYG word processor for the authoring of publication-ready articles automatically formatted to chosen citation styles."
Gamesprogress report on Ember, which is projected to have an 0.5.0 release soon. "The main focus of 0.5.0 is on providing better authoring tools. The goal is to allow players to edit the whole world within Ember. One major component that has been missing so far has been a working entity editor. This has now been added to Ember."
GUI Packageshas been announced. "This is mainly a bug fix release".
Interoperabilitylooks at the 0.1 pre 1 release of Wine-doors. "Wine-doors is an application designed to make installing windows software on Linux, Solaris or other Unix systems easier. Wine-doors is essentially a package management tool for windows software on Linux systems. Most Linux desktop users are familiar with package management style application delivery, so it made sense to apply this model to windows software."
Medical Applicationshas announced the availability of Developer Preview 2.0 of the ClearHealth 2.0 electronic medical record system. "After more than a year of active design and development ClearHealth 2.0 is about to lift off. A developer preview demonstration is available at demo.clear-health.com but please note that it is a BETA pre-release edition of CH 2.0 undoubtedly with some rough edges remaining to be fixed." has announced the release of FreeMED 0.8.4 and REMITT 0.3.3. "FreeMED version 0.8.4 and REMITT version 0.3.3 have been formally released on Tuesday, May 22, 2007. They include support for CMS's mandated NPI standard, as well as many other improvements and community contributed bugfixes and features. FreeMED is an GPL-licensed opensource EMR/PM suite ..."
Music ApplicationsLV2 Simple Sine Generator is very simple plugin, generating sine when feed with notes. It should load in any host supporting midi port LV2 extension, i.e. elven, ingen, lv2_jack_host and zynjacku. Plugin should be usable for testing basic synth functionality and as simple example synth plugin to start with if you want to code your own LV2 synth plugin." This release contains many fixes, most notably better support for older GTK versions. PHASEX now works with GTK2 versions as low as 2.4.x, which should help most of the build issues on older distros." pyliblo is a Python wrapper for the liblo OSC library. It supports almost the complete functionality of liblo, allowing you to send and receive OSC messages using a nice and simple Python API."
Office SuitesUnoconv converts between any document format that OpenOffice understands. It uses OpenOffice's UNO bindings for non-interactive conversion of documents. Supported document formats include Open Document Format (.odf), MS Word (.doc), MS Office Open/MS OOXML (.xml), Portable Document Format (.pdf), HTML, XHTML, RTF, Docbook (.xml), and more. (24 document formats in total)".
RSS Softwarehas been announced. "We are proud to announce the release of version 0.9 or LeafRSS! This version includes full smarty template integration, as well as options to embed the articles in another web page, or even to allow the output of the filter as an RSS feed."
Web Browsersannounced. "A third set of release candidate builds for the forthcoming Mozilla Firefox 184.108.40.206 release are now available for testing. Testers can obtain these builds from the rc3 directory on ftp.mozilla.org. Any problems discovered by users can be posted to Firefox 220.127.116.11 Release Candidate 3 announcement on quality.mozilla.org. Currently in a pre-alpha state, the QMO site was launched last week to improve the community-based Mozilla quality assurance effort. Firefox 18.104.22.168 is likely to be released simultaneously with Firefox 22.214.171.124, which will be the final release of the 1.5.0.x line before the Mozilla Corporation ends official support."
Languages and Tools
XMLcompare XML parsers in part two of an O'Reilly article series. "In part 1 of this series we showed you the results of our event-driven parser benchmarks. The outcome of these benchmarks showed that the LIBXML2 SAX-like parser in C is superior over the other tested parsers. In second place followed the two Java pull-parser implementations Javolution and Woodstox. In this part of the series we will show you how the object model parser performed in our tests."
Librarieslibnetfilter_conntrack is a userspace library providing a programming interface (API) to the in-kernel connection tracking state table."
Page editor: Forrest Cook
Next page: Linux in the news>>
Copyright © 2007, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds