Chapter 35
Release Notes

This chapter lists the user-visible changes in Urbi SDK releases.

35.1 Urbi SDK 2.7.3

Released on 2011-10-07.

35.1.1 Fixes

35.1.2 Changes

35.1.3 Documentation

35.2 Urbi SDK 2.7.2

Released on 2011-05-13.

There was no public release of Urbi SDK 2.7.2, which contained only a simple change for a single architecture for a customer of ours.

35.3 Urbi SDK 2.7.1

Released on 2011-03-17.

35.3.1 Fixes

35.3.2 Changes

35.3.3 Documentation

35.4 Urbi SDK 2.7

Released on 2011-03-10.

Many optimizations have been implemented, and users should observe a significant speedup. Particularly, the threaded support in UObjects has been modified to perform all operations asynchronously, instead of locking the engine.

35.4.1 Changes

35.4.2 New Features

35.4.3 Documentation

35.5 Urbi SDK 2.6

Released on 2011-01-06.

This release features several deep changes that are not user visible, but which provide significant optimizations. Several bugs have been fixed too.

35.5.1 Fixes

35.5.2 Optimizations

35.5.3 New Features

35.5.4 Documentation

35.6 Urbi SDK 2.5

Released on 2010-12-07.

35.6.1 Fixes

35.6.2 New Features

35.6.3 Changes

35.6.4 Documentation

35.7 Urbi SDK 2.4

Released on 2010-10-20.

35.7.1 Fixes

35.7.2 New Features

35.7.3 Documentation

35.8 Urbi SDK 2.3

Released on 2010-09-28.

35.8.1 Fixes

35.8.2 New Features

35.9 Urbi SDK 2.2

Released on 2010-08-23.

35.9.1 Fixes

35.9.2 New Features

35.9.3 Documentation

35.10 Urbi SDK 2.1

Released on 2010-07-08.

35.10.1 Fixes

35.10.2 New Features

35.10.3 Optimization

35.10.4 Documentation

35.11 Urbi SDK 2.0.3

Released on 2010-05-28.

35.11.1 New Features

35.11.2 Fixes

35.11.3 Documentation

35.12 Urbi SDK 2.0.2

Released on 2010-05-06.

35.12.1 urbiscript

35.12.2 Fixes

35.12.3 Documentation

35.13 Urbi SDK 2.0.1

Released on 2010-05-03.

35.13.1 urbiscript

35.13.2 Documentation

35.13.3 Fixes

35.14 Urbi SDK 2.0

Released on 2010-04-09.

35.14.1 urbiscript Changes New features

35.14.2 UObjects

35.14.3 Documentation

35.15 Urbi SDK 2.0 RC 4

Released on 2010-01-29.

35.15.1 urbiscript Changes New objects New features

35.15.2 UObjects

35.16 Urbi SDK 2.0 RC 3

Released on 2010-01-13.

35.16.1 urbiscript Fixes Changes

35.16.2 Documentation

35.17 Urbi SDK 2.0 RC 2

Released on 2009-11-30.

This release candidate includes many fixes and improvements that are not reported below. The following list is by no means exhaustive.

35.17.1 Optimization

The urbiscript engine was considerably optimized in both space and time.

35.17.2 urbiscript New constructs New objects New features Fixes Deprecations Changes

35.17.3 UObjects

35.17.4 Documentation

The documentation was fixed, completed, and extended. Its layout was also improved. Changes include, but are not limited to:

35.17.5 Various

35.18 Urbi SDK 2.0 RC 1

Released on 2009-04-03.

35.18.1 Auxiliary programs

35.18.2 urbiscript Syntax of events

The keyword emit is deprecated in favor of !.

Deprecated Updated

emit e;


emit e(a);


emit e ~ 1s;

e! ~ 1s;

emit e(a) ~ 1s;

e!(a) ~ 1s;

The ? construct is changed for symmetry.

Deprecated Updated

at (?e)

at (e?)

at (?e(var a))

at (e?(var a))

at (?e(var a) if 0 <= a)

at (e?(var a) if 0 <= a)

at (?e(2))

at (e?(2))

This syntax for sending and receiving is traditional and can be found in various programming languages. Changes Fixes

35.18.3 URBI Remote SDK

The API for plugged-in UObjects is not thread safe, and never was: calls to the API must be done only in the very same thread that runs the Urbi code. Assertions (run-time failures) are now triggered for invalid calls.

35.18.4 Documentation

Extended documentation on: Comparable (Section 23.7), Orderable (Section 23.41).

35.19 Urbi SDK 2.0 beta 4

Released on 2009-03-03.

35.19.1 Documentation

An initial sketch of documentation (a tutorial, and the language and library specifications) is included.

35.19.2 urbiscript Bug fixes Changes

35.19.3 Programs Environment variables

The environment variable URBI_ROOT denotes the directory which is the root of the tree into which Urbi was installed. It corresponds to the ”prefix” in GNU Autoconf parlance, and defaults to ‘/usr/local’ under Unix. urbiscript library files are expected to be in ¡URBI_ROOT¿/share/gostai/urbi.

The environment variable URBI_PATH, which allows to specify a colon-separated list of directories into which urbiscript files are looked-up, may extend or override URBI_ROOT. Any superfluous colon denotes the place where the URBI_ROOT path is taken into account. Scripting

To enable writing (batch) scripts seamlessly in Urbi, urbi-console -f’/‘--fast’ is now renamed as ‘-F’/‘--fast’. Please, never use short options in batch programs, as they are likely to change.

Two new option pairs, ‘-e’/‘--expression’ and ‘-f’/‘--file’, plus the ability to reach the command line arguments from Urbi make it possible to write simple batch Urbi programs. For instance:

$ cat demo 
#! /usr/bin/env urbi-console 
cout << System.arguments; 
$ ./demo 1 2 3 | grep output 
[00000004:output] ["1", "2", "3"] urbi-console

urbi-console is now a simple wrapper around urbi-launch. Running

urbi-console arg1 arg2...  

is equivalent to running

urbi-launch --start -- arg1 arg2... Auxiliary programs

The command line interface of urbi-sendbin has been updated. urbi-send now supports ‘-e’/‘--expression’ and ‘-f’/‘--file’. For instance

$ urbi-send -e var x; -e "x = $value;" -e shutdown;  

35.20 Urbi SDK 2.0 beta 3

Released on 2009-01-05.

35.20.1 Documentation

A new document, ‘FAQ.txt’, addresses the questions most frequently asked by our users during the beta-test period.

35.20.2 urbiscript Fixes Changes

35.20.3 UObjects

35.20.4 Auxiliary programs

Now, options for urbi-launch are separated from options to give to the underlying program (in remote and start modes) by using ‘--’. Use ‘urbi-launch --help’ to get the full usage information.

35.21 Urbi SDK 2.0 beta 2

Released on 2008-11-03.

35.21.1 urbiscript

35.21.2 Standard library

35.21.3 UObjects

”UVar::type()” method.
It is now possible to get the type of a ”UVar” by calling its ”type()” method, which returns a ”UDataType” (see ‘urbi/uvalue.hh’ for the types declarations).

35.21.4 Run-time

Stack exhaustion check on Windows

As was done on GNU/Linux already, stack exhaustion condition is detected on Windows, for example in the case of an infinite recursion. In this case, SchedulingError will be raised and can be caught.

Errors from the trajectory generator are propagated

If the trajectory generator throws an exception, for example because it cannot assign the result of its computation to a non-existent variable, the error is propagated and the generator is stopped:

xx = 20 ampli:5 sin:10s; 
[00002140:error] !!! lookup failed: xx  

35.21.5 Bug fixes

Support for Windows shares

Previous versions of the kernel could not be launched from a Windows remote directory whose name is starting with two slashes such as ‘//share/some/dir’.

Implement ”UVar::syncValue()” in plugged uobjects

Calling ”syncValue()” on a ”UVar” from a plugged UObject resulted in a link error. This method is now implemented, but does nothing as there is nothing to do. However, its presence is required to be able to use the same UObject in both remote and engine modes.

”isdef” works again

The support for k1 compatibility function ”isdef” was broken in the case of composed names or variables whose content was ”void”. Note that we do not recommend using ”isdef” at all. Slots related methods such as ”getSlot”, ”hasSlot”, ”locateSlot”, or ”slotNames” have much cleaner semantics.

”__name” macro

In some cases, the __name macro could not be used with plugged uobjects, for example in the following expression:

send(__name + ".val = 1;");  
This has been fixed. __name contains a valid slot name of uobjects.

35.21.6 Auxiliary programs

The sample programs demonstrating the SDK Remote, i.e., how to write a client for the Urbi server, have been renamed from urbi* to urbi-*. For instance urbisend is now spelled urbi-send.

Besides, their interfaces are being overhauled to be more consistent with the Urbi command-line tool-box. For instance while urbisend used to require exactly two arguments (host-name, file to send), it now supports options (e.g., ‘--help’, ‘--port’ to specify the port etc.), and as many files as provided on the command line.