[chuck-users] (chimera) [part 1]: 64-bit chuck

Ge Wang ge at ccrma.Stanford.EDU
Thu Sep 6 07:36:46 EDT 2012

Dear all,

chuck- (chimera) is available:


ChucK is, at last, 64-bit compatible.

Lack of native 64-bit support has been a long standing issue with ChucK, 
and many people in our community over the last few years have contributed 
to making this happen.  They include Kassen for his ever helpful voice of 
reason, Paul Brossier (who did a 64-bit port of ChucK to ubuntu, a 
port that this release is largely based upon), Stephen Sinclair, who also 
provided a comprehensive and well-executed 64-bit port, and more recently 
Robin Haberkorn, who has jumped into the ChucKian development fire, as 
well as Michael Wilson -- your initiative and insights have definitely 
helped to make this happen.  There have been many helpful discussions on 
chuck-users and chuck-dev, at CCRMA, as well as much encouragement and 
support from friends and colleagues like Fernando Lopez-Lezcano.  ... Of 
course, had we/I architected the VM instructions to not make integer, 
float, and pointer size assumptions in the first place in 2006 with ChucK 
1.2, it would have made things quite a bit easier for everyone.  Yeah... 

This is the very first release of ChucK that natively support 64-bit as 
well as 32-bit.  There are a few additional features (and likely a few 
new, uh, "features").  I imagine a few hot-fixin' rapid incremental 
releases might be needed.  We have tried to test this thoroughly, in 
particular on Linux and Mac OS X, and less so on windows.  To be totally 
honest, we have not been able to even test compilation for 64-bit on 
windows - if someone out there with access to 64-bit windows (XP or 
Windows7) who can give this a shot, that would be much appreciated!  In 
general, users of all supported systems, please let us know if/how well 
this works for you!

Part 2 -- on the way!

Not unlike the final installment of the Harry Potter movies, or perhaps 
the video game ->Final<- Fantasy XIII (there is a FF XIII-2 and what is 
effectively FF XIII-3 was just announced), this release will take 
place in multiple parts, mostly because Spencer is traveling to ICMC in 
Ljubljana, Slovenia, where he will present our paper on Chugins, Chugens, 
and Chubgraphs.  Also, there is a little bit more work to do for 64-bit 
miniAudicle, so that's going to come in CK, part 2, and probably 
from Slovenia (it seems only fitting to release ChucK from the 
international computer music conference).  Also, our dear friend Graham 
Coleman has asked about a chuck-1.3 version of (gasp) Audicle, so there 
might be a, part 2, b.

As usual, please see the release notes at the end of this email. Thanks 
and Happy ChucKin, UpChucKin, Chugin'!  gg!!  ChucK on!!

Spencer + Ge, on behalf of entire chuck team

   - (added) 64-bit support for all platforms (OS X, Linux, Windows)
             many thanks to Paul Brossier, Stephen Sinclair,
             Robin Haberkorn, Michael Wilson, Kassen, and
             Fernando Lopez-Lezcano, and all of chuck-users!
   - (added) Math.random(), random2(), randomf(), random2f(), srandom(),
             and Math.RANDOM_MAX;  NOTE: randomf() returns range 0.0 to 1.0
             these use the much better random() stdlib functions
             the existing Std.rand*() and Std.srand() is still
             be available for compatibility (these to be deprecated
             in the future; please start using Math.random*())
             * (NOTE: on windows, Math.random() still uses the same
               generator as Std.rand() -- we hope to improve this in
               a future version!)
             * (NOTE: also see removed below)
   - (added) chuck --version | chuck --about now print architecture
             (32-bit or 64-bit)
   - (added) Machine.intsize() will return int width in bits
             (e.g., 32 or 64)
   - (added) examples/array/array_mmixed.ck to verify mixed-index
             fix (see below), based on Robin Haberkorn's test code
   - (fixed) multi-dimensional arrays now correctly support mix-typed
             indices (e.g., strings & ints) (thanks Robin Haberkorn)
   - (fixed) constants in Math library now cleaner, they include:
             * Math.PI
             * Math.TWO_PI
             * Math.e or Math.E
             * Math.i or Math.I or Math.j or Math.J // as 'complex' type
             * Math.INFINITY
             * Math.RANDOM_MAX
             * Math.INT_MAX // currently, differs on 32-bit and 64-bit
             * Math.FLOAT_MAX
             * Math.FLOAT_MIN_MAG // minimum positive float value
   - (fixed) Chubgraph.gain(), .last(), and .op()
   - (fixed) error message printing system for variable arguments
   - (fixed) StifKarp.sustain now works properly
   - (fixed) all examples now use Math.random*() instead of Std.rand*()
   - (removed) Math.rand*() removed --> please use Math.random*();
             (see 'added' above; Std.rand*() still there, but to be
             deprecated; please use Math.random*() moving forward)

More information about the chuck-users mailing list