Roadmap to version 1.0 GPL

We have compiled a roadmap showing what we need to do prior to the 1.0 release of Libsmart. Here you will find all the modules and technologies we are currently working at to complete Libsmart.

The values in braces reflect the percentage the feature is completed.

smart

  • (100%) 20050310 Document or fix the problems using the managed<> template.
  • (100%) 20050304 clarify uses of version.hpp. Ok. version.hpp version() returns the current libsmart subversion revision.

smart::sys

  • (100%) 20050124 Thread local storage support (put into smart::sys::tls namespace).
  • (100%) 20050124 Condition variables.
  • (100%) 20050208 remove Event::waitForMultiple(), clients need to use the not yet implemented signal bus.
  • (100%) 20050224 Serial port interface tests for using the Edge port serial adapter cards.
  • (100%) 20050208 Simplify GenericLock/GenericTryLock in section.hpp (no: we leave them as they are)
  • (100%) 20050125 remove wait.hpp and move sleep() to timer.hpp
  • (100%) 20050222 support os_error.
  • (50%) 20050310 consolidate threadpools and thread (make Thread class configurable).
  • (100%) 20050308 Singleton template.
  • (100%) 20050310 Rename timer.hpp to time.hpp. Fix all dependencies.
  • (100%) 20050310 Introduce global smart/types.hpp. timeout_t is our first candidate. Fix all occurrences of timeout_t.
  • (100%) 20050310 Introduce os_error standard exception to support EINTR on Posix platforms. And support this throughout Libsmart.

smart::io

  • (100%) File class to access files including asynchronous support for Win32 and Mac OS X. -> Post 1.0 (no Mac available)
  • (0%) Functionality to change file flags.

smart::net

  • (0%) UDP Sockets
  • (100%) 20050124 network name resolver (gethostbyname() interface)
  • (100%) 20050208 do not require SocketSubsystem instantiation for win32 platforms.
  • (100%) 20050414 avoid any memory allocations in Socket::wait functions. Not tested yet. Implemented SocketWaitHandler.
  • (100%) 20050222 support os_error.
  • (100%) 20050414 support EAGAIN in poll(). Not tested yet.
  • (100%) 20050519 support socket options.

smart::util

  • (100%) 20050417 Fix namespace issue with the argscan module.
  • (100%) 20050414 Move away ManagedIdMap to libclever.
  • (100%) 20050217 Decide what to do with the pool class. (stays in)
  • (100%) 20050217 Decide what to do with the table and assoctable classes: Moved to removed_modules
  • (100%) 20050217 Ringbuffer support -> Post 1.0
  • (100%) 20050414 tlist support (lists based on elist supporting arbitrary types).
  • (80%) integrate pat-function in string.hpp
  • (100%) 20040414 optimize replace-function in string.hpp
  • (100%) 20050224 Move array tests to /tests
  • (100%) 20050208 shared: use swap idiom for operator =
  • (0%) Add istring, case insensitive string container.

metatype

  • (0%) Test and support --optimize option again.
  • (100%) 20050208 support swap and use swap idiom for operator =

wf

  • (100%) 200504014 Workflow core engine implementation. 20050119 The core is implemented, and the basic proof-of-concept is done. 20050123 Preliminary testing done.
  • (100%) 20050414 Move workflow engine to libclever. It is not yet ready for use.

Conventions

  • (100%) 20050310 Use Param suffix instead of Config Settings or Setup for parameterisation classes (you may abbreviate parameterisation in documentation with p14n)
  • (80%) 20050310 never use assert(false), use assert(!"informative text").
  • (90%) 20050310 use swap idiom for operator =.
  • (0%) 20050310 revalidate error text convention and change all texts which do not comply.

Tests

  • (75%) Move the various module-tests to tests/ subdirectory
  • (50%) Consolidate and auto-run tests.
  • (25%) 20050222 Create test for sockets

Examples

  • (0%) make logger example complete (test client is missing)
  • (0%) 20050208 document examples and move test-examples to tests.

Misc

  • (0%) 20050222 Clarify and specify inter-module dependencies.

>>> At this point is our first milestone, when all the above issues are resolved, we will release an alpha version to the public.

Documentation

  • (50%) complete reference documentation
  • (0%) Metatype documentation
  • (0%) Serial port interface documentation
  • (100%) 20050304 Documentation of the code conventions used in Libsmart
  • (0%) Cross-platform howto.
  • (0%) Examples documentation.

Build scripts

  • (80%) Support for cross-platform compilation (naming and strip)
  • (100%) 20040304 Better support for customisation of build settings (some people want to use -Os instead of -O3, for example). Ok, CXXFLAGS and CFLAGS are now integrated and the configure default -g -O2 is now supressed.

Post 1.0 releases

  • smart::sys: Signal-bus (a signalling system capable to wait for multiple events, from serial ports, sockets, timers and events).
  • smart::sys: Support semaphores.
  • smart::sys: NPTL support.
  • smart::sys: Application log, Event Log support.
  • smart::util: Clean up array<> container.
  • smart::io: Ringbuffer support
  • smart::io: File class for asynchronous file transfer support when compiled on Win32 and Mac OS X
  • wf: 20050217 Reimplement workflow engine and implement workflow primitives and patterns.