I have an experimental Debian package that contains a Nu interpreter built for Debian Etch (4.0). This Nu is built to use the GNU Objective-C runtime and GNUstep-base, the GNUstep open-source equivalent of Apple’s Foundation classes.
With GNUstep support, “NuFound” (aka libFoundation) support is dropped. GNUstep is actively maintained and adds at least one very important feature (UTF-8 support) that is missing in libFoundation.
All source code changes for this build are now in my Nu github repository and I will soon also add a nuke task to build the Debian package.
Please be aware that this is very new. So far it has only been tested in a VMware image, but because it is based completely on stock Debian components, I think it will hold up well.
A link and more details are below.
Downloading
To download and install the package, run the following in your Debian installation:
tim@debian:~$ wget http://programming.nu/nu-0.3.3-1_i386.deb
--09:58:48-- http://programming.nu/nu-0.3.3-1_i386.deb
=> `nu-0.3.3-1_i386.deb'
Resolving programming.nu... 157.22.130.35
Connecting to programming.nu|157.22.130.35|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 359,012 (351K) [text/html]
100%[================================>] 359,012 479.77K/s
09:58:59 (478.03 KB/s) - `nu-0.3.3-1_i386.deb' saved [359012/359012]
tim@debian:~$ sudo dpkg -i nu-0.3.3-1_i386.deb
Selecting previously deselected package nu.
(Reading database ... 29333 files and directories currently installed.)
Unpacking nu (from nu-0.3.3-1_i386.deb) ...
Setting up nu (0.3.3-1) ...
If you get messages abut missing dependencies, run the following to resolve them:
tim@debian:~$ sudo apt-get -f install
Then type “nush” and give it a try!
Unit Tests
The nuke test results for this build are below:tim@debian:~/work/nu$ nuke test Using Nukefile with target test. nuke: running in /home/tim/work/nu nuke: ./nush tools/nutest test/test_*.nu TestArray: running --- testCreate --- testEach --- testEachInReverse --- testEachWithIndex --- testIndexing --- testSortedArrayUsingBlock TestArray: completed 6 tests/28 assertions/0 failures/0 errors TestBridge: running --- testFunctions TestBridge: completed 1 tests/4 assertions/0 failures/0 errors TestCharacters: running --- testEscapedCharacters --- testFourCharacterIntegers --- testHexEscapedCharacters --- testOctalEscapedCharacters --- testRegularCharacters TestCharacters: completed 5 tests/19 assertions/0 failures/0 errors TestClassMethodMissing: running --- testCustomSubclassClassMethodMissing TestClassMethodMissing: completed 1 tests/2 assertions/0 failures/0 errors TestClasses: running --- testAddClassMethod --- testAddInstanceMethod --- testAutomaticClassCreationFromNu --- testAutomaticClassCreationFromObjC --- testMetaVariables TestClasses: completed 5 tests/6 assertions/0 failures/0 errors TestClosures: running --- testAccumulator --- testScoping TestClosures: completed 2 tests/10 assertions/0 failures/0 errors TestComparison: running --- testGreaterThan --- testGreaterThanOrEqual --- testLessThan --- testLessThanOrEqual TestComparison: completed 4 tests/16 assertions/0 failures/0 errors TestControl: running --- testCase --- testCond --- testFor --- testForBreak --- testForContinue --- testIf --- testLoopMacro --- testUnless --- testUntil --- testUntilBreak --- testUntilContinue --- testWhile --- testWhileBreak --- testWhileContinue TestControl: completed 14 tests/27 assertions/0 failures/0 errors TestDictionary: running --- testAutomaticAccessor --- testCreate --- testEach --- testLookupWithDefault --- testSet TestDictionary: completed 5 tests/19 assertions/0 failures/0 errors TestEnumerable: running --- testEach --- testEachWithIndex --- testFind --- testFindWithInteger --- testMap --- testMapSelector --- testReduce --- testSelect --- testSelectWithInteger TestEnumerable: completed 9 tests/13 assertions/0 failures/0 errors TestErrors: running --- testCarOnAtom --- testCdrOnAtom --- testIncorrectNumberOfBlockArguments --- testMisplacedCmethod --- testMisplacedImethod --- testMisplacedIvar --- testMisplacedIvars --- testNoInstanceVariable --- testParseError --- testUndefinedClass --- testUndefinedSuperClass --- testUndefinedSymbol TestErrors: completed 12 tests/12 assertions/0 failures/0 errors TestExceptions: running --- testRangeException --- testUserRaisedException TestExceptions: completed 2 tests/8 assertions/0 failures/0 errors TestInterface: running --- testParser TestInterface: completed 1 tests/4 assertions/0 failures/0 errors TestList: running --- testAll --- testAny --- testApply --- testBasicOperators --- testCompare --- testIndexing --- testLength --- testList? --- testMap --- testNull? --- testObjectAtIndex --- testPair? --- testSort TestList: completed 13 tests/75 assertions/0 failures/0 errors TestListEnumerable: running --- testEach --- testEachWithIndex --- testFind --- testFindWithInteger --- testMap --- testMapSelector --- testReduce --- testSelect --- testSelectWithInteger TestListEnumerable: completed 9 tests/13 assertions/0 failures/0 errors TestMacros: running --- testBrokenFactorialMacro --- testFactorialFunction --- testFactorialMacro --- testGensymInterpolation --- testIvarAccessorMacro --- testMacroImplementation TestMacros: completed 6 tests/7 assertions/0 failures/0 errors TestMath: running --- testAbs --- testArithmeticOperators --- testBooleanOperators --- testCbrt --- testCeil --- testComparisonOperators --- testCos --- testExp --- testExp2 --- testFloor --- testIntegerDivide --- testIntegerMod --- testLog --- testLog10 --- testLog2 --- testRaiseNumber --- testRound --- testShiftOperators --- testSin --- testSqrt --- testSquare TestMath: completed 21 tests/105 assertions/0 failures/0 errors TestMemory: running --- testCreationInNuUsingObjC --- testCreationInObjCUsingNu --- testCreationInObjCUsingNuWithOwnership --- testCreationInObjCUsingObjC --- testIvarReleaseOnDealloc TestMemory: completed 5 tests/11 assertions/0 failures/0 errors TestNu: running 2008-12-14 09:52:34.762 nush[3131] warning: assert is unavailable 2008-12-14 09:52:34.763 nush[3131] warning: assert is unavailable --- testAssert --- testAtom? --- testSymbol? --- testThrow* TestNu: completed 4 tests/14 assertions/0 failures/0 errors TestNumbers: running --- testDownTo --- testTimes --- testUpTo TestNumbers: completed 3 tests/7 assertions/0 failures/0 errors TestOperators: running --- testAddOperator --- testIfOperator --- testIfSugaredOperator --- testMaxOperator --- testMinOperator --- testSubtractOperator --- testUnlessOperator --- testUnlessSugaredOperator TestOperators: completed 8 tests/78 assertions/0 failures/0 errors TestParser: running --- testParseHereStrings --- testParseMultilineRegularExpressions TestParser: completed 2 tests/10 assertions/0 failures/0 errors TestPropertyLists: running --- testSerialization TestPropertyLists: completed 1 tests/1 assertions/0 failures/0 errors TestReferences: running --- testReturnByReference TestReferences: completed 1 tests/1 assertions/0 failures/0 errors TestRegex: running --- testExtendedRegex --- testMultipleCaptures --- testRegex --- testRegexWithOperator TestRegex: completed 4 tests/7 assertions/0 failures/0 errors TestReturn: running --- testReturnFromMethod --- testReturnNested --- testReturnValue --- testReturnVoid TestReturn: completed 4 tests/14 assertions/0 failures/0 errors TestStrings: running --- testEscapedHereStrings --- testEscapedRepresentations --- testEscapedStrings --- testExplicitlyEscapedHereStrings --- testExplicitlyEscapedStrings --- testExplicitlyUnescapedHereStrings --- testExplicitlyUnescapedStrings --- testHexEscapedHereStrings --- testHexEscapedStrings --- testInterpolation --- testLineSplitting --- testOctalEscapedHereStrings --- testOctalEscapedStrings --- testStringEach TestStrings: completed 14 tests/54 assertions/0 failures/0 errors TestSwizzling: running --- testClassMethodSwizzling --- testInstanceMethodSwizzling TestSwizzling: completed 2 tests/12 assertions/0 failures/0 errors TestSystem: running --- testSystem TestSystem: completed 1 tests/3 assertions/0 failures/0 errors TestTemplates: running --- testCodeSubstitution --- testCountingSubstitution TestTemplates: completed 2 tests/2 assertions/0 failures/0 errors TestTruth: running --- testFalse --- testTrue TestTruth: completed 2 tests/8 assertions/0 failures/0 errors TestTypes: running --- testVoidMethodReturnTypes TestTypes: completed 1 tests/2 assertions/0 failures/0 errors TestVarArgs: running --- testArrayOperator --- testDictOperator --- testSimple TestVarArgs: completed 3 tests/9 assertions/0 failures/0 errors All: completed 173 tests/601 assertions/0 failures/0 errors SUCCESS (0 failures, 0 errors)


2 comments ↓
Great news!
...but I have a little complaint: Your package is not policy compliant. The reasons are many, but installing files into
/usr/localis a big no-no. Read the Debian Policy Manual and uselintianorlindaif you want to make it compliant.By the way: Debian Etch was not released on 2008-10-23, it was updated on that day. The release was on 2007-04-08.
Christopher,
Thanks—I’ll make those corrections.
Tim
Leave a Comment (sign in with Twitter)