Changes in nesC 1.1.3 ===================== - network types: platform-independent types to support heterogeneous networking. See doc/network-types.txt. - support passing assembler options for nesC programs with -Wa, as usual w/ gcc - support -I- correctly (see gcc manual) - initialiser bug fix (some initialisers crashed nesC) Changes in nesC 1.1.2 ===================== - Misc bug fixes (in particular, work around latest-cygwin weirdness which causes file corruption) - Recognise the gcc noinline attribute and don't automatically inline such functions (patch contributed by Klaus Madsen, nesc@hjernemadsen.org) - Mac OS X support; avr-gcc not needed when compiling nesC - Support gcc's -I- idiom to prevent searching current dir for components, interfaces, etc. - 64-bit platform support: compile with -DLARGE_ADDRESSES, and edit the MEMSLICE1 constant in src/libcompat.regions.c to be the number of unused high-order bits on your platform - ncg supports C (note that there's no C mig support yet) Changes in nesC 1.1.1 ===================== - Support for platforms and sensorboards in directories other than tos/platforms and tos/sensorboards: a platform or sensorboard can be used if its directory is specified with an explicit -I directive (see doc/ncc.html for details). - support for Tython - support -Wparentheses (warnings on statements like 'if (var = value) ...', and other similar C pitfalls) - nesC editing modes for emacs, vim and kde (kate, kwrite, kdevelop): these are in tools/editor-modes, and get installed to /lib/ncc/editor-modes. Read the appropriate readme.txt file for installation directions - msp430 and env targets (env gets the machine specification from an environment variable and is intended to ease implementation of new platforms, see doc/envtarget.html for details) - new hwevent, atomic_hwevent attributes to tell nesC which functions are interrupt entry points (hwevent: interrupt entry point, invoked with interrupts enabled; atomic_hwevent: interrupt entry point, invoked with interrupts disabled) - these should ease porting to new platforms - new keywords (future use): abstract, component, extends, generic, new - A few small bug fixes Changes in nesC 1.1 =================== - Support for new language features: o atomic sections o compile-time data race detection o explicit marking of asynchronous (aka interrupt) code (async keyword on commands and events) o automatic combining of results of multiply-wired functions o initialisers now supported on module variables o uniqueCount() function to complement unique(), returning the number of uses of the latter (useful for dimensioning arrays...) - new nesC warning flags/changes: o -W[no-]unexpected-docstring is now -Wnesc-docstring, and defaults to off o -W[no-]nesc-fnptr: warn for uses of function pointers o -W[no-]nesc-data-race: turn on[off] compile-time data race detection o -W[no-]nesc-async: warn [bug in alpha: error] if asynchronous code calls synchronous code o -W[no-]nesc-combine: warn when multiply wired functions do not have a combining function defined on the result type. See tos.h for the the combining function definition for result_t o -Wnesc-all: same as -Wnesc-data-race -Wnesc-async -Wnesc-fnptr and -Wnesc-combine - The NESC preprocessor symbol is defined to XYZ, where X is the major version, Y the minor and Z the patchlevel. So nesc 1.1 defines NESC as 110 - Tool chain changes: o ncc has been split into two files: ncc and nescc TinyOS-specific code is in ncc, nescc is a "generic" nesC compiler (nescc does not automatically include tos.h, and does not automatically add the TinyOS directory structure to the search path) o the -fnesc-include= option includes a C file before compiling the requested component (used by ncc to include tos.h...) You can specify several -fnesc-include=... options o A hardware platform X can now more easily be added: - create directory .../tos/platforms/X - place a .platform file in .../tos/platforms/X. Look at existing .platform files for inspiration. o A sensor board Y can add directories to the search path if there is a .sensor file in the .../tos/sensorboards/Y directory (as with .platform, .sensor is just perl code so can modify the variables used by ncc to achieve whatever effect is necessary) o set-mote-id works for programs greater than 64K - New tool to extract (enum) constants from C code: ncg. Usage is similar to mig. - Debugging on mica supports with the Atmel JTAG ICE and the AvarICE project (at http://sourceforge.net/projects/avarice) - Some improved error messages, miscellaneous bug fixes