Rapicorn - Experimental UI Toolkit  16.0.0
Release News

Rapicorn 16.0.0: (2016-04-07)

  • Remove internal librsvg copy, require an installed librsvg-2.0.
  • Provide enum meta information for enum values stored in Any.
  • Provide change notification signals for Parameter.
  • Cleanup threads via atexit(3).
  • Added support for auxillary data on IDL sequence and record definitions.
  • Added compatibility code to downgrade cython requirement to 0.20.1 for trusty.
  • Added fixes for g++-4.8.4 and libtool >= 1.5.2.
  • Grow Any content to enable structured type and small string optimizations.
  • Remove remove Atomic<> in favour of the "Construct On First Use Idiom".
  • Improved exception specifications to satisfy cython-0.23.3.
  • Reduced unit testing time, individually and by tuning the benchmark timers.
  • Use xvfb-run(1) to run X11 related unit tests.
  • Support and use the TAP protocol for unit test evaluation.
  • New versioning: Releases increase MAJOR for major API changes.
  • New versioning: Releases increase MINOR in case of any ABI breaks.
  • New versioning: Releases increase MICRO for backwards compatibility.
  • New versioning: The MAJOR number ideally matches the release year.
  • The Python module alias remans 'Rapicorn', stored in Rapicorn_15/.
  • C++ namespace changed to 'Rapicorn', files install under 'rapicorn-$MAJOR'.
  • The librapicorn shared library supports installation of multiple versions.
  • Many build system fixes and integration of travis-ci builds.
  • Automatically built Debian packages are now on http://bintray.com/beast-team/.
  • The file debian/copyright now contains an accurate licensing account.
  • Install cython headers to allow IDL Python bindings outside Rapicorn.
  • Add AutoSeeder class to provide good non-deterministic seeding entropy.
  • Add PCG-32 which provides fast but well distributed pseudo random numbers.
  • Include a random_secret() in hash functions to avoid collision attacks.
  • Use Python enum classes and C++11 enum classes in IDL code generation.
  • Fixed shebang to reliably find Python2.7. [Milk Brewster]

Rapicorn 15.09.0: (2015-09-16)

  • Added theming support and $RAPICORN_THEME to override theme selection.
  • Update RSVG rendering bits.
  • Added layer and state painting widgets.
  • Provide rapidres(1): A binary resource file to C++ code converter.
  • Added missing manual page documentation.
  • Added ability to render SVG fragments.
  • Added widget for state painting and for stretched SVG painting.
  • Added ElementPainter to render and resize widgets from stretched SVGs.
  • Added FocusPainter for focus state dependent decoration.
  • Added support for attribute="\@eval some_variable" syntax.
  • Added example for interactive code editing and execution.
  • Factory cleanups, widget have an 'id', properties have a 'name' attribute.
  • Allow source priorities to affect scheduling across other event loops.
  • Major improvements to the Aida Python bindings by making use of Cython.
  • IDL records and sequences now have different client and server code.
  • Eliminated '=0' syntax for IDL methods.
  • Added C++ visitors to IDL objects, records and sequences for INI and XML.
  • Improved enum introspection and IDL marshalling.
  • Major improvements to type support in Any getters and setters.
  • Provide forward and backward conversion between Any and records/sequences.
  • Added Parameter abstraction to simlify record field and property edits.
  • Display Window code cleanup and optimization.
  • Automate memory bookkeeping with shared_ptr for all objects and widgets.
  • Various improvements to the C++11 support, compilaion and build system.

Rapicorn 14.10.0: (2014-10-09)

  • Project is re-license under MPLv2.
  • Task List: New high level overview: http://testbit.eu/wiki/Rapicorn_Task_List
  • Major documentation improvements plus new illustrations.
  • Added coverage report generation.
  • Extended dynamic Any to contain arbitrary C++ structures.
  • Made image processing more robust.
  • Integrated SVG image rendering branch.
  • Support property element syntax in XML UI files.
  • Simplified XML UI syntax for widget definitions and arguments.
  • Added simple XML UI data bindings for Python.
  • XML UI support for hsize-group & vsize-group.
  • Now all widget APIs are exported through IDL definitions.
  • Fixed X11 compose key handling.
  • Added X11 selection copy and paste.
  • Added Keccak for SHAKE & SHA3 hashing and CSPRNG.
  • Added remote reference counting across IDL threads.
  • Lots of bug fixes, code cleanups and elimination of old/unused code.
  • Portability fixes for 32bit, 64bit, Ubuntu 14.04 and 14.10.
  • Removed tarball dependencies: doxygen dot bison flex
  • Build infrastructure and dependency updates: glib-2.32 g++-4.7

Rapicorn 13.07.0: (2013-07-06)

  • Aida: Optimizations and cleanups in the IPC implementation.
  • Aida: Protocol extension to retrieve initial remote handle.
  • Aida: Added support for dynamic records and sequences inside Aida::Any.
  • Added StringFormatter/cxxprintf: A type safe C++11 printf implementation.
  • Migrated all printf uses to use StringFormatter instead.
  • Big refactoring of the low level input/output routines.
  • Improved testing code, added feature toggles.
  • Improved efficiency of debugging code.
  • Many documentation improvements and fixes.
  • Automatization of documentation builds documentation uploads.
  • Rapicorn now ships complete documentation builds in tarballs.
  • Added AlignedArray<> implementation, courtesy of Stefan Westerfeld.
  • Install rapicorn-zintern tool to generate C code from binary files.
  • Added API for external initialization checks to avoid double initialization.
  • Added many portability fixes for 32bit platforms and some BSD support.

Rapicorn 13.03.0: (2013-03-24)

  • Added proper UTF-8 locale initialization and POSIX locale support.
  • Extended mmap() support to full builtin resource loading subsystem.
  • AIDA: The IDL compiler and infrastructure got renamed to AIDA.
  • AIDA: Added support for IDL properties in C++ & Python.
  • AIDA: Added support for IDL namespaces in Python.
  • AIDA: Added rudimentary support for Any type in Python.
  • AIDA: Support fully down_casted type returns in Python.
  • AIDA: Added enum support to generated Python code.
  • AIDA: Adapted IDL fundamental types to other projects.
  • AIDA: Added sfidl features, include paths, enum expressions, streams, etc.
  • AIDA: Enable self-contained modules via ORB message routing.
  • AIDA: Merged client and server code for all non-interface types.
  • Lists: Fixes and new support for clicks, key presses and seleciton modes.
  • Added generic scroll event support to scroll ports.
  • Added support for widget actiavetion via Space and Return.
  • Added INI file support.
  • Replaced signal system by more efficient C++11 signal system.
  • Added asynchronous signals, which allow main loop driven signal emissions.
  • Moved Rapicorn to using its own full fledged X11 backend.
  • Many, many code cleanups and parallel build fixes.
  • Added support for g++-4.7 and newer SSE CPU types.
  • Added support for pseudo objects on widget selectors.
  • Ported code base to C++11.
  • Provide C++11 based threading system, including a lock-free ring buffer.
  • Much improved support for debugging, error and warning messages.
  • Lots of performance, memory use and layout improvements.
  • Many bugs, locale and message fixes.
  • Many documentation updates.

Rapicorn 12.08.0: (2012-08-08)

  • Started publicizing widget interfaces in IDL.
  • Moved all UI handling into a separate UIThread.
  • Split client and server code generation from IDL.
  • Introduced client API smart handles and threading-separation.
  • Greatly improved IDL code generation, support client API signals.
  • Added IDL type generator for mmap-able type information.
  • Highly optimized generated glue code for method calls.
  • Use 128bit hashes for remote method lookups.
  • Include IDL files in documentation builds.
  • Optimized main profiling hot spots.
  • Rewrote event loop for high performance, allowing ~360k/s remote calls.
  • Optimized remote API calls by using a lock-free queue (ca. 10% faster).
  • Ported all rendering over to cairo.
  • Streamlined the rendering pipeline.
  • Added snapshots to, use: rapidrun –snapshot <PNGFILE>
  • Ported to g++-4.6, C++11 and std::thread.
  • Fixed container/viewport/window hierarchy.
  • Unified XML parsing logic with XmlNode API.
  • Implemented CSS selector matches on widget trees.
  • Added accurate time handling and benchmarking.
  • Greatly improved debugging output, added backtraces.
  • Switched to silent autotool builds.
  • Improved and cleaned up parallel builds.
  • Added debugging options, see: $RAPICORN=help
  • Scripted and streamlined release builds and uploads.
  • Rewrote X11 based unit tests, use Xephyr if available.
  • Various bug fixes, code cleanups and dead code removal.
  • Greatly extended the test suite, added more test automation means.
  • Documentation & example updates, see: http://dev.testbit.eu/rapicorn/latest/

Rapicorn 10.08.0: (2010-08-20)

  • Introduced Cairo dependency.
  • Introduced C++ TR1 dependency (for shared_ptr, etc).
  • Added $RAPICORN environment variable to control logging and more.
  • Added PLIC, a pluggable IDL compiler.
  • Added Remote Object Programming Extension.
  • Added window and widget addressing functionality.
  • Allow signal disconnections by Id.
  • Added simple expression parser to evaluate property value assignments.
  • Added sample expression evaluator as: ui/tests/sinfextest –shell
  • Added XML UI file error reporting.
  • Changed packing properties into regular Item properties.
  • Merged h/v-scale and -align into Item pack properties.
  • Replaced hfill/vfill in Table by h/v-scale and -align properties.
  • Replaced *_attach in table by Item's h/v-position and -span properties.
  • Got rid of the packer class entirely.
  • Added testing framework with macros and reference files.
  • Added '-x' to rapidrun to auto-exit.
  • Added '–list' to rapidrun to list gadgets from a GUI file.
  • Provide regular expression parser API in rapicorn-core.
  • Introduced a basic typed value system and model APIs.
  • Started list area/widget development.
  • Optimized resizing performance.
  • Cosmetic fixups in colors and gradients.
  • Implemented horizontal and vertical size groups.
  • Renamed string_to_cescape() and fixed string_to_cquote() quoting.
  • Generate internal C++ bindings (to IDL specifications).
  • Provide a main loop implementation in Python.
  • Generate external Python bindings.
  • Majorly extended test suite.
  • Optimized remote invocations and reference counting.
  • Started migrating interfaces from headers to IDL.
  • Hand optimized threading primitives and main loop handling.
  • Applied fixes for AMD64 compilation. [Stefan Westerfeld]
  • Updates to compile with GCC-4.4.
  • Linker optimizations to improve ELF relocations.
  • Loads of other cleanups and bug fixes.

Rapicorn 8.4.0: (2008-04-24)

  • Changed versioning scheme to YEAR.MONTH.REVISION.
  • License update to GNU LGPL 2.1.
  • Added a publically installed tool: rapidrun
  • Support println() and close() commands in GUI files.
  • Introduce simple Application and Window object APIs.
  • Merged libbirnet into Rapicorn as librapicorncore.
  • Implemented expose region merging/comprssion.
  • Reiimplemented rectangle gradient shader.
  • Switched to autogenerated ChangeLogs.
  • Improved feedback on parser errors.
  • Fixed Gtk+ version checks.
  • Added PNG saving support.
  • Removed PERL build dependency.
  • Rewrote asyncronous main loops.
  • Many improvements to text editing areas.
  • Speed up blitting logic for local displays.
  • Added SIMD optimized rendering functions for MMX CPUs.
  • Fixed some reference counting issues and child removal.
  • Improved vertical text ellipsization to line granularity.
  • Removed error prone default values from property mechanism.
  • Install tutorial under ${prefix}/doc/rapicornXXXX/tutorial/.
  • Misc compiler and threading fixes, depend on g++-3.4.6.
  • Lots of bug fixes, cleanups and improved test coverage.

Rapicorn 0.1.2: (2007-01-22)

  • added Image support for PNG images.
  • added HSlider, VSlider, Arrow, dot-grid.
  • added ScrollArea.
  • added Adjustments.
  • added command system allowing on-click properties.
  • added reset logic to recover from stale event situations.
  • added requisition tuning to allow iterative size allocations.
  • added event grabbing.
  • added MainLoop.
  • added Thread-per-Window paradigm.
  • added Viewport abstraction of drawing backends.
  • added color schemes.
  • added simple function Evaluator for XML properties.
  • added Markup to labels.
  • added focus handling for Items.
  • added TextEditor prototype.
  • added Region to handle rectangle arrays.
  • added partial screen updates.
  • removed libcairo/libpixman dependency.
  • overhauled Table shrinking logic.
  • upgraded Birnet library.

Known Issues:

  • instabilities upon main loop exit.
  • possible build issues with g++ versions other than 3.4.

Rapicorn 0.1.1: (2005-07-31)

  • overhaul of rendering logic.
  • added Arrangement.
  • added Point property.
  • added Controller interfaces for event handling.
  • added Image item displaying GdkPixbuf pixstreams.
  • speed ups and many fixes.

Rapicorn 0.1.0: (2005-04-19)

  • added basic class hierarchy, properties.
  • added Affine transforms.
  • added RGB Plane and porter-duff combination modes.
  • added C++ signal system (mostly auto-generated).
  • added automatic enum introspection for enumdefs.hh.
  • added XML markup parser.
  • added XML based Item factory and registry.
  • added basic Event processing.
  • added Pango based Label.
  • added Frame, Ambience, Button.
  • added Table, Alignment, HBox, VBox.
  • added Gtk+ based drawing backend.

Rapicorn 0.0.1:

  • Initial project setup.