Nu-2.0.1
This minor update contains better handling of classes whose init methods return something other than self, notably NSXMLDocument. It also changes loading of modules to use a single shared parser so that assignments made in a loaded file are available in the calling context (as they should have been).
See the downloads page.
This build was made from the "amalgamated" branch. Soon this branch will become "master". As with 2.0, this version of Nu is exclusively for systems running Mac OS 10.7 or iOS 4.3 and their successors.
Nu-2.0.0
Nu 2.0 is now available through a binary installer.
See the downloads page for this update to Nu.
Nu 2.0 is a simpler, smaller version that uses new features in iOS 4.3 and Mac OS 10.7 to eliminate external dependencies and a few internal components.
- NSRegularExpression replaces PCRE.
- imp_implementationWithBlock() is used to generate method implementations. Previously we used libFFI for this on MacOS and a precompiled pool of method handlers on iOS. Now this pool is no longer needed.
- The NuSymbolTable is now just an NSMutableDictionary.
To make it easier to add Nu as a drop-in component of iOS and Mac apps, the source code has been combined into two files, Nu.h and Nu.m. These are currently available in the "amalgamated" branch in the git repository, and will likely be the primary source for Nu going forward.
Nu 2.0 is intended for systems running Mac OS 10.7 or iOS 4.3 and their successors. For conciseness and simplicity, support for all other platforms is dropped.
What’s Nu?
Nu is an interpreted object-oriented language. Its syntax comes from Lisp, but Nu is semantically closer to Ruby than Lisp. Nu is implemented in Objective-C and is designed to take full advantange of the Objective-C runtime and the many mature class libraries written in Objective-C. Nu code can fully interoperate with code written in Objective-C; messages can be sent to and from objects with no concern for whether those messages are implemented in Objective-C or Nu.
Nu currently requires Mac OS X version 10.5 or greater and runs on PowerPC and Intel systems. Ports to Linux and the Apple iPhone are also available; contact me directly or visit my blog for more details.
NuKit
One of my favorite uses of Nu is for building web apps and APIs for mobile apps. To support that, I've evolved a collection of frameworks that support serving and making HTTP requests, generating markup, serializing data, and accessing databases. To keep things flexible, each framework can be built separately and is in a separate git repository. But to make them simple to use, I've created a binary installer that installs my favorite components from a single package.
To get it, visit the NuKit page.
Nu Seems Stable (by Jason Grossman)
I've been nagging Tim to say something about the stability of recent releases of Nu, so he asked me to write this.
Nu is a new language (no pun intended — see below for the etymology of the name Nu). It hasn't yet formed the basis of an impressive suite of stable software, and you'd think hard before using it to write anything mission-critical.
Despite that, it is actually rather stable. Let me say more about why.
vi tips for Nu
I'm collecting some tips for using the vim code editor with Nu.
Nu-0.4.0
See the downloads page for this long-overdue update to Nu.
The most visible change in this release is that the macro operator has been switched to refer to macro-1 instead of macro-0 (the original Nu macro facility). That is deprecated but kept for compatibility.
Support for garbage collection is now compiled in by default (Mac OS only).
We've also been making good progress running Nu on Linux-based systems. Currently a few small sites (including Tim's blog) are running with Nu on Rackspace Cloud Servers. See notes/DEBIANINSTALL in the Nu source distribution for details about building for Debian.
Macros
Thanks to Jeff Buck and Issac Trotts, we have some nice changes coming to Nu macros.
The changes are modeled on the description of macros in Paul Graham's On Lisp, so our new macro facility should feel familiar to experienced Lisp programmers.
Currently the changes are in my (Tim's) git repository, and they'll be included in the next release of Nu (0.4.0).
For more detail, see Jeff's excellent tutorial.
Nu-0.3.3
See the downloads page for this update to Nu.
This version mainly adds community-contributed updates:
- math-related enhancements from Brian Chapados and Issac Trotts.
- an OCaml-style pattern matching macro from Issac Trotts.
- nuke improvements from Jason Sallis.
- behind-the-scenes cleanup by Elizabeth Kellner to support Apple's Objective-C Garbage Collector. Garbage collection is not supported in the release build, but is available with a small change in the Nukefile in Nu builds from source.
Nu-0.3.2
Here's a quick update that makes it easier for newcomers to get the latest Nu. With this version, all of the examples in the Cocoa Programming with Nu repository should work, plus there are many other small enhancements detailed in the commit logs.
Available on the downloads page.
Cocoa Programming with Nu
To mark the release of the third edition of Aaron Hillegass's Cocoa Programming For Mac OS X, there is a new git repository on github to contain translated examples. To get started, I've posted an example from one of my favorite chapters, Chapter 28 (Web Services), and will add more over time. If you'd like to help, please do! Just fork the github repository, add your conversions, and send me a pull request. Let's see how quickly we can get this covered!
Here's the repository: Cocoa Programming With Nu.