TUD Logo

TUD Home » ... » User-level environment » DICE » Release Notes

Operating Systems

DICE Release Notes

Changes made between two releases are listed below. Be aware, that this includes only major changes. A new release may also include a number of bug fixes.

Changed in 3.3.0

  • [feature] use UTCB IPC when possible
  • [feature] allow to specify absolute [uuid] attributes for operations (without interface ID)
  • [feature] allow to specify ranges in [uuid] attribute for operations
  • [fix] lookup of types to respect scope of definition
  • [fix] memory allocation for [out, ref] parameters at server side is not intended
  • [fix] creation of enums
  • [fix] when using the -o option, target files were sometimes empty
  • [fix] in C/C++ parser: recognize __builtin_va_list as type not ID
  • [fix] defining C++ built-in types in C headers failed (wchar_t)
  • [fix] parsing of concatenated literal strings in C/C++ files, of compound statements as expressions (gcc C extension), of casting statements
  • fail on deprecated -C option

Changes in 3.2.1

  • [feature] new compiler option --require <string> that specifies the minimal version the currently running Dice has to be.
  • [feature] new #pragam require <string> with same semantic
  • [fix] rcv_any and wait_any functions have different names on client and server side
  • [fix] marshalling of pointer types as parameter of ipc_call did not work
  • [fix] whitespace output when parsing fies using #pragma
  • [fix] make unmarshal/marshal/wait_any functions protected in generated server classes (C++ backend)

Changes in 3.2.0

  • [feature] add L4.Fiasco backend to reflect changes in L4.Fiasco API (uses ipc_*_tag variants of IPC C-Bindings)
  • [feature] replace parsers with new C/C++ and IDL parsers
    • import/include changes: import for C header files, include for IDL files only
    • pragma force-include: to force inclusion of C header files
    • Dice now obeys preprocessor directives around includes
    • "string" is now IDL keyword: no longer use string as name
  • [feature] renamed long option --create-inline into --inline
  • [fix] enums are properly supported now
  • [fix] CORBA_Object was not generated with const_ prefix where possible
  • [fix] header files for non-gnu C/C++ compilers
  • [fix] explicetly test for C/C++ compiler flags to avoid errors due to missing or unsupported flags
  • [fix] when receiving variable number of flexpages at server, temporary variable was not declared; array of flexpages whas internally counted as one flexpage; opcode was not correctly extracted when receiving variable number of flexpages

Changes in 3.1.3

  • [feature] simplistic exception support for C back-end
  • [feature] add -fsyscall= option to allow optimization of kernel entry.
  • [feature] removed --with-l4dir configure option.
  • [feature] libltdl is shipped with Dice now
  • [fix] building user's manual in builddir != srcdir
  • [fix] build fixes for Ubuntu
  • [fix] really scrub dice dir on 'make cleanall' - fixes some subsequent build errors experienced by some users
  • [fix] no dependency on a configured L4 object-dir anymore
  • [fix] C++ back-end fixes
  • [fix] -s option did not generate *-sys.h[h] file
  • [fix] sending array of flexpages works for L4 V2
  • [fix] signdness issues in generated code

Changes in 3.1.2

  • [feature] only set receive window in message buffer to environment's receive flexpage if we really receive a flexpage.
  • [feature] only set exception in environment if we received an exception (this might require to reset the environment in case of error in calling code)
  • [feature] add [default_timeout] attribute: if attribute is set, IPC timeout is set using constant, default timeout values. Otherwise the environment's timeout member is used.
  • [fix] sending two variable sized arrays into one direction
  • [fix] crash on Mac OS due to internal misuse of iterators
  • [fix] print file name and line number also for warnings
  • [fix] smaller memory leakage fixes
  • [fix] build on MacOS X
  • [fix] configure is more strict if bison/flex are missing
  • [fix] bootstrap version checks more accurate now
  • the Common Data Representation back-end is obsolete
  • removed the obsolete developer's manual

Changes in 3.1.1

  • [feature] on installation a version suffix is appended to the binary name, allowing installation of multiple dice binaries. The 'dice' name is linked to the versioned binary.
  • [feature] inspired by madwifi, I added an svn revision info to --verion line.
  • [fix] warn on colliding operation IDs for two base interfaces in the derived interface.
  • [fix] classes generated from derived interfaces derive from the classes of the base interfaces now. This has some consequences for member variables (exist in base class) and constructors (call base class constructor).
  • [fix] compiler warning of gcc for generated C++ stubs when initializing exception member
  • [fix] parameters with constructed type and [out, ref] parameter were not unmarshalled correctly

Changes in 3.1.0

  • replace -C option with -x corba (conforms to gcc and easier to extend)
  • fix recognition of unnamed union/struct fields in C parser
  • changed verboseness levels:
    • -v1 only print options
    • -v2 + verbose compiler output (same as -v)
    • -v3 + verbose parser output
    • -v4 + verbose scanner output
  • add --disable-verbose option to configure (requires automake 1.9)
  • reimplemented [sched_donate] function attribute to modify time donation during IPC
  • implement send-only function in socket back-end (Stephen Kell)
  • add receive timeout in socket back-end (Stephen Kell)
  • more C++-ification (using more STL functionality)
  • replace [prealloc] by [prealloc_client] and [prealloc_server]
  • several bug fixes

Changes in 3.0.0

  • changed --verbose Option handling
  • improved C++ support
  • tracing plugin
  • allow type attribute specification for return type of operation
  • support attribute [without_using_exceptions] for interface
  • Dice is order preserving, that is, elements in the target code appear in the order of the respective elements in the source IDL
  • -falign-to-type is default for ARM
  • added -fgenerate-line-directive to generate source line statements in target code
  • split [error_function] into [error_function_client] and [error_function_server]
  • -fuse-symbols/-fuse-defines is deprecated
  • backend for X0 adaption deprecated
  • fix: fpage receive window if no fpages expected
  • fix: functions with [out] fpage and no return type
  • fix: [out] one-way functions with return type
  • add [dedicated_partner] attribute for interface to allow closed sessions
  • message buffer format changed from byte-stream to structured type

Changes in 2.3.0

  • added -ftrace-lib to provide own tracing hooks
  • -fserver-parameter is default now
  • -fctypes and -fl4types are deprectaed. The behaviour of -fctypes is default now. To generated CORBA compliant data types specify -fcorba-types.
  • Added Option -fcorba-types that will cause the usage of CORBA types.
  • examples subdir has been superceeded by l4/pkg/dice-testsuite
  • several bug fixes (AMD64, memory management at server side)

Changes in 2.2.9

  • better support for C++: -BmCPP generates .cc/.hh files and g++ comformant code
  • support AMD64 for V2 using C Bindings (-Bpamd64)
  • specify output directory using -o Option
  • removed optimization (-O) option (unused)
  • some bug-fixes

Changes in 2.2.8

  • replaced Vector and String class by STL implementations
  • made usage of 'long long' type detectable by configure script
  • configure checks for existence of 'long long' type and 'atoll' function
  • added option to align parameters in the message buffer to the size of their type
  • starting support for L4 V4 (aka X2) ABI
  • add function attribute [allow_reply_only] for asynchronous servers
  • add function attribute [noopcode] to not sent opcodes
  • add function attribute [noexceptions] to not sent exceptions
  • add option -fno-dispatcher to not generate the dispatcher function

Changes in 2.2.7

  • split server-loop function into a simpler server-loop and a dispatch function
    • eases implementation of own server loop
    • reduces optimization potential
  • added option to not generate server loop function
  • added CORBA Common Data Representaion (CDR) back-end
    • selected using -Bicdr
    • generated marshalling, unmarshalling, and dispatch function only

Changes in 2.2.6

  • type-attributes in C parser
  • ARM backend for X0
  • sequence type supported
  • CORBA string mapping fixed
  • [in] arrays are const arguments now
  • exceptions supported for system-exceptions
    • IPC error
    • wrong opcode
  • unified CORBA types into one header file
  • generates only C files for IDL file given as argument
  • provided template Makeconf.local, which tests all examples using Fiasco UX

Changes in 2.2.5

  • some more magic for the CORBA types:
    • configure sets the l4dir and the include path where dice includes are installed to
    • dice adds them to the include paths with "/dice" added; thus /usr/include and $(L4DIR)/include are no longer added automatically but /usr/include/dice and $(L4DIR)/include/dice instead
    • adapted automatic include of "dice/dice-corba-types.h" appropriately
    • added possibility to mark a file as "privately included" meaning that no #include statement will appear for it in generated files; thus "dice-corba-types.h" will not appear in generated files

Changes in 2.2.4

  • bug fix release for 2.2.3: include/import fixed
  • SOCKETAPI changed into L4API_linux (in accordance with BID)
  • added some gcc extensions into C parser

Changes in 2.2.3

  • introduced seperate parsers for C/C++ and IDLs
  • Several bug fixes to 2.2.2

Changes in 2.2.2

  • Supports X0 adaption (V2 user land applications using X0 kernel)
  • Added a user's manual (doc/user-man/)
  • Unified some examples
  • More CORBA compatibility fixes (might require changes in your sources)
  • Several bug fixes to 2.2.1

Changes in 2.2.1

  • Supports Linux Sockets as transport mechanism
  • Works with automake/autoconf now. Therefore, there are no more Makefiles in the CVS; they have to be generated.
  • Several bug fixes to 2.2.0

Changes in 2.2.0

  • L4 version 2 is working. Generated code can transfer indirect strings, flexpages and common data.
  • Added some more examples to demonstrate the usage.
  • Can generate code, which uses C-style type names instead of CORBA_* type names

Changes in 2.1.3beta

  • fix: function-file association (-fmodule, -finterface, -ffunction option are working again) -> including something like "l4/sys/types.h" produced messy results (fixed)
  • fix: CORBA sequence type bounds, sometimes collide with filename rule
  • fix: message buffer type had no parent parent (is now interface)
  • fix: if first file does not exist, segfault
  • fix: write server/component function only if option set
  • fix: removed Windows-C-compiler specific type-qualifiers
  • fix: if dubious parameter print warning
  • the server/component templates are written to a seperate file (*-template.c)

Changes in 2.1.2beta

  • Remodelled include/import:
    • Regardless of include or import, C declarations other than typedefs and const declarations are dropped
    • Import has semantic of own scope for symbols, which means that an imported file is pre-processed separately
    • CPP is used to resolve includes again, which allows correct handling of conditional includes
  • fix: when calculating the size of a declarator, count all names, not just first (CBETypedDeclarator)
  • fix: dont add opcode size to L4 specific message buffer (its added by the functions using the message buffer) (CL4BEMsgBufferType)
  • fix: dword-align size of byte-array (CL4BEMsgBufferType)
  • fix: when casting the message buffer to a struct/union, the whole struct/union declaration was written (CBEType, CBEStructType, CBEUnionType, CBEMarshaller)
  • fix: if marshalling struct with bitfields, do not marshal each member with base type's size (CBEMarshaller)
  • fix: reverse find did always start at end of string (String)

Changes in 2.1.1beta

  • added back-end supprt to generate C++ classes and name-spaces
  • changed back-end create process (see developer notes)
  • fix: allow tagged enums in IDL file
  • fix: support for include paths and order

Changes in 2.1.0beta

  • Dice uses the message passing approach for its client stubs and server loops. Thus many functions are generated, which can be used to send messages without using a server loop.
  • Flick compatibility mode is no longer supported.
  • New keywords have been added to the DCE IDL. E.g. 'flexpage', 'fpage', the attributes 'default_function' and 'uuid'. The latter was present before, but not supported.
Last modified: 1st Feb 2010, 2.32 PM
Author: Dipl.-Inf. Ronald Aigner