#
# Copyright (C) 1999-2025. Christian Heller.
#
# This file represents a record of user-visible changes to cybop.
#
# The format is not strict, but the changes to the most recent version
# should appear at the top of the file.
#
# Cybernetics Oriented Programming (CYBOP) <http://www.cybop.org/>
# CYBOP Developers <cybop-developers@nongnu.org>
#
# @version CYBOP 0.28.0 2025-05-31
# @author Christian Heller <christian.heller@cybop.org>
#

CYBOP 0.28.0, 2025-05-31, Christian Heller  <christian.heller@cybop.org>

        * CYBOL:
            Language:
            - Add cybol operations "calculate/increment", "calculate/decrement"
            - Use two operands for increment and decrement, just like for all other cybol calculate operations
            - Rename cybol operation "modify/lower" into "modify/lowercase" and use noun "lowercaser"
            - Rename cybol operation "modify/upper" into "modify/uppercase" and use noun "uppercaser"
            - Add container function taken from clojure language as cybol operation "modify/shuffle"
            - Add cybol operations "flow/loop-times", "flow/loop-for", "flow/loop-each"
            Applications:
            - Add cybol application "app/addition/increment/"
            - Add cybol application "tools/manual-generator/"
            - Add cybol applications "loop", "loop-times", "loop-for", "loop-each_map", "loop-each_reduce" to directory "app/control_flow/"
            Library:
            - Provide library with "load_file" and "save_file" functionality
        * Project:
            API Generator (Enrico Gallus):
            - Fix cmake warnings
            - Fix venv issue in python scripts for cybol api generator
            - Remove github dependency in directory "build/scripts/"
            - Add python script files for api generation to cybop's git repository at gnu savannah
            Website:
            - Update and add project history to website

CYBOP 0.27.0, 2023-08-30, Christian Heller  <christian.heller@cybop.org>

        * CYBOI:
            General:
            - Delete preprocessor macros in implementation source files, since they are required only in header files
            - Clean up some unnecessary forward declarations which have become superfluous due to the usage of header files
            - Move functions "detect" and "move" from module "communication" to "algorithm"
            - Delete directories "controller/checker/io/" and "controller/checker/client/" which have long become superfluous since using an interrupt pipe
            - Update uml activity diagram "doc/development/cyboi/checker_and_sensor" accordingly
            De-/Serialiser:
            - Add simple mail transfer protocol (smtp) constants
            - Add post office protocol (pop) constants
            - Add internet message access protocol (imap) constants
            - Add smtp response deserialiser
            - Adapt cybol serialiser so that cybol channel gets written besides other properties
            Converter:
            - Avoid wrong destination data by catching zero length source data in files "utf_8_decoder.c" and "utf_8_encoder.c"
            Checker:
            - Add files "case_checker.c" and "insensitiveness_checker.c"
            Modifier:
            - Flexibilise lowerer and upperer by using a type parametre
            - Replace usage of file "append_http_request_deserialiser.c" with new "part_appender.c"
            Searcher:
            - Implement linear searcher
            - Adapt searcher so that not only primitive but also part elements may get processed (the latter recursively)
            - Replace functionality of part "finder" with "searcher" in all source code but leave client finder intact
            - Introduce perfectmatch flag in search function, for requesting equal count of searchword and searched child node names
        * CYBOL:
            Language:
            - Add cybol operation "search/linear"
            - Delete cybol operation "access/get-index"
            - Add cybol language "application/mbox" as media (mime) type
            - Add cybol language "message/imf" as media (mime) type
            Applications:
            - Move cybol applications from "examples/serialisation/" to "app/serialisation/"
            - Add cybol application "app/internet/smtp_server/"
            - Add cybol application "app/internet/smtp_client/"
            - Add cybol application "app/algorithm/linearsearch/"
            - Add cybol application "app/serialisation/email/"
            - Replace ampersand with numeric reference in file "domain/uri.cybol" of cybol application "presence"
        * Project:
            Compilation:
            - Add directory "buildx/" and file "src/cyboi/cyboix.c" to build a monolithic executable "cyboix" without shared libraries
            Versioning:
            - Migrate cybop svn to git
            Documentation:
            - Extend documentation in file "doc/development/add_new_cybol_operation.txt" with new steps related to directories "include/" and "src/library/"
            API Generator:
            - Fix problem with api generator by adapting format constants paths from "src/" to "include/" in directory "build/scripts/"

CYBOP 0.26.0, 2023-04-04, Christian Heller  <christian.heller@cybop.org>

        * CYBOI:
            De-/Serialiser:
            - Add error code constants for german "elektronische Ersatzbescheinigung" (eEB) of "Kommunikation im Medizinwesen" (KIM) infrastructure
            - Add internet message format (imf) name constants necessary for email communication
            Libraries:
            - Add directory "library/" for special summary source files
            - Create header files in directory "include/" with constants, variables and function signatures
            - Move file "cyboi.c" from directory "controller/" into separate directory "cyboi/" destined only for executable
            - Remove keyword "static" before any variables in directory "variable/", so that they are valid and usable globally across libraries
            - Adapt all source code to new header file includes
        * Project:
            CMake Scripts:
            - Refactor configuration files in order to produce shared libraries
            - Add shared libraries for sub directories of "src/", "src/executor/" and "src/executor/representer/"
            - Reintegrate external libraries
            - Generate binaries into directories "bin/" for executable and into "lib/" for libraries

CYBOP 0.25.0, 2023-03-01, Christian Heller  <christian.heller@cybop.org>

        * CYBOI:
            General:
            - Fix error with missing file open mode property in file "applicator/dispatch/open.c"
            - Define static int variable "DEBUG_CYBOP" in file "log_setting.c", to be used for debug log messages in certain parts of code
            - Check cybol "flow/loop" break property in file "part_handler.c" in order to be able to leave a loop at each step in cybol
            Stack Variables:
            - Add new format "element/reference" to store a pointer to a part or property as stack variable, which is important for recursion
            - Allocate new part for each stack variable instead of just copying pointer references
            - Avoid thereby unwanted manipulation of original property values in knowledge memory (heap)
            - Remove manual deallocation of stack variables in file "part_pop_handler.c", since they get deallocated automatically by garbage collection when removing them from stack memory
            - Move stack handling from directory "controller/handler/" to "executor/stacker/" with sub directories "pusher" and "popper"
            - Store stack variables in file "handler.c" instead of in "part_handler.c", so that they are considered in path call chains
            - Use function "get_name_array" instead of "get_part_name" (resolving path) in flow applicators that call the handle function, so that runtime argument properties of the path (and not tree node) are considered
            xDT Deserialiser:
            - Reactivate xdt field description serialiser
            - Skip whitespace between fields
            - Correct wrong length of some constants
            - Replace usage of file "end_field_xdt_selector.c" with "newline_selector.c"
            - Provide decoder for dos code pages 437 (ibm pc) and 850 (IBM850) as character set
        * CYBOL:
            Applications:
            - Add cybol application "examples/knowledge_tree/stack/"
            - Simplify break condition check for operation "flow/loop" in all cybol applications and api generator
        * Project:
            Build Process (Enrico Gallus):
            - Convert file "release.txt" to markdown format
            - Add clean-all cmake target which deletes all files created during cmake process
            - Add dev target which executes all targets described in file "release.md"

CYBOP 0.24.0, 2022-12-24, Christian Heller  <christian.heller@cybop.org>

        * CYBOI:
            General:
            - Remove channel, encoding, language from cyboi-internal allocated part structure
            - Add reverser providing functionality for cybol operation "modify/reverse"
            - Add lowerer providing functionality for cybol operation "modify/lower"
            - Add upperer providing functionality for cybol operation "modify/upper"
            - Add repeater providing functionality for cybol operation "modify/repeat"
            - Add replacer providing functionality for cybol operation "modify/replace"
            Serialiser and Deserialiser:
            - Clean up cybol de-/serialiser from obsolete channel, encoding, language
            - Move boolean/colour/datetime/duration/socket out of cybol de-/serialiser
            - Add numeral vector de-/serialiser
            - Add numeral de-/serialiser detecting number format automatically which is needed in json
            - Consider number base prefix and process dual/octal/decimal/hexadecimal numbers
            - Offer scientific notation for decimal fractions
            - Handle complex numbers in cartesian and polar form
            - Provide language properties constraints to various de-/serialisers
        * CYBOL:
            Properties:
            - Add property "repetition" for cybol operation "modify/repeat"
            - Add property "searchword" for cybol operation "modify/replace"
            - Replace language "message/cli" with "message/tui"
            - Add languages "text/cybol+xml" and "text/cybol+json"
            - Use mime type format "application/octet-stream" as replacement for "text/ascii"
            Language Properties (Constraints):
            - "separator", "grouping" (thousands separator) used in numeral deserialiser
            - "sign", "prefix", "base", "classicoctal", "grouping", "separator", "decimals", "scientific" used in numeral serialiser
            - "positioning" used in tui serialiser
            Applications:
            - Add cybol application "knowledge_tree/creation/"
            - Add cybol applications "reverser", "lowerer", "upperer", "repeater", "replacer" to directory "examples/container_modification/"
            - Add cybol application "serialiser/xml/"
            - Add cybol application "serialiser/cybol/"
            - Make multi-channel "Hello World!" cybol application "ui" work fully and save screenshots of tui, gui, wui
            - Move working cybol applications from directory "examples" to new directory "app" for demonstration
            - Rename cybol library to "cyblib"
        * Project:
            Documentation:
            - Update cybol api specification in javadoc comment blocks of files in directory "constant/format/cybol/"
            - Update cyboi interpreter c code conventions style guide and upload to website
            - Update release instructions
            Website:
            - Make up simplified demo package as zip file containing just readme + cyboi + a few functioning apps
            - Upload tutorials to various video portals
            - Provide tutorials as separate page on website
            Build Process (Enrico Gallus):
            - Delete unused/obsolete bin and dist folder
            - Remove doxygen completely
            - Rename make targets
            - Generate cmake config header file during make process
            - Add deb to cpack package list

CYBOP 0.23.0, 2022-09-04, Christian Heller  <christian.heller@cybop.org>

        * CYBOI:
            Memoriser:
            - Add memoriser allocator and deallocator for input output entry, internal memory, mutex
            - Create input output entries for all channels in internal memory allocator
            - Fix bug in item allocator where ITEM_REFERENCE_COUNTER did not get incremented in case of a null value data array
            - Add more error handling to array/item/part allocator, in order to avoid memory leaks caused by zero- or negative size allocation
            - Fix thereby long-existing bugs reported by valgrind as "Invalid write of size 8" and "Use of uninitialised value of size 8"
            Communication architecture:
            - Complete feeler suspender, dispatcher closer, activator disabler, maintainer shutter
            - Add client closer handler to sensor and reader
            - Rename channel "pipeline" into "fifo" and add new channel "pipe"
            - Complete implementation of read/write file open mode for cybol operation "dispatch/open"
            - Adapt open mode flags for writing, now including O_TRUNC, in order to fix bug that old data remained in overwritten files
            Awakener:
            - Add thread copier, which is needed for thread comparison, to find out if a thread already exists
            - Use DEFAULT_THREAD_IDENTIFICATION for comparison in file "spinner.c", since win32 uses a struct and not an int as thread identification
            - Delete superfluous file "system_signal_handler_startup_manager.c", since threads are exited using an awakener
            - Avoid race conditions in cybol caused by sensing threads running in parallel which, if closed by one thread, leads to errors in another, by introducing global variable IDENTIFICATION_INTERRUPT_INTERNAL_MEMORY_STATE_CYBOI_NAME
            - Introduce cybol operation "communicate/identify" to be used in cybol handlers of "feel/sense" and "dispatch/close", for getting the current device/client identification used in asynchronous input
            Serialiser and Deserialiser:
            - ansi escape code serialiser: change type from "wchar_t" to "char", since multibyte characters are sent via "write" to terminal
            - ansi escape code length deserialiser: used by reader for text user interface (tui) data input
            - gui event and xcb event: update
            - whitespace deserialiser and selector: used for skipping whitespace characters in other deserialisers
            - backslash escape deserialiser: handling "\n" for linefeed (new line) etc.
            - joined string deserialiser: offer classic "split" functionality, as prerequisite to the csv deserialiser
            - textline list deserialiser: represent text file as single lines
            - newline selector: used by csv deserialiser
            - csv deserialiser: for character (comma) separated values (csv) with delimiter, quotation, header
            - digit wide character to integer mapper: used with numeral de-/serialiser
            - numeral deserialiser and selector: to be used with cybol, json and other formats
            - json serialiser and deserialiser: almost complete, only number recognition still missing
            - xml deserialiser: detect empty tag space end " />"
            - character reference deserialiser: extend with further html entities generated by python script parsing web sources (Enrico Gallus)
            - representer and communicator: introduce language properties (constraints)
            - knowledge deserialiser: replace * with {} for references and process path fragments following a reference enclosed in {}
            General:
            - Add modifier stripper providing functionality for cybol operation "modify/strip"
            - Add modifier normaliser providing functionality for cybol operation "modify/normalise"
        * CYBOL:
            Operations:
            - modify/strip removing leading and trailing whitespaces, as well as the variants "modify/strip-leading" and "modify/strip-trailing"
            - modify/normalise replacing all internal sequences of white space with just one
            - modify/replace replacing a searched character sequence with a given new sequence
            - modify/repeat producing a destination string whose value is the concatenation of the source string repeated count times
            - modify/lower converting a string to lower case letters
            - modify/upper converting a string to upper case letters
            - modify/reverse reversing the order of the child nodes of the source part storing them in the destination part
            Language Properties (Constraints):
            - "clear" and "newline" used with text (pseudo) terminal
            - "indentation" used with xml or html serialiser, indenting the single lines depending on the current hierarchical level
            - "normalisation" used with xml or html deserialiser, summarising (condensing) spaces and line breaks to just one space
            - "delimiter" and "quotation" and "header" and "width", to be used with joined strings or character (comma) separated values (csv)
            - "medium" referencing a gui window for finding the correct action belonging to a mouse click
            - "minimum" and "maximum" for serial (port) interface communication
            Applications:
            - checker/ for testing lexicographical comparison
            - serialisation/joined_string/
            - serialisation/textline_list/
            - serialisation/csv/
            - serialisation/json/
            - serialisation/xml/
            Specification:
            - Adapt cybol json format using value arrays with [] instead of name-value objects with {} in "doc/cybol/syntax/"
            - Extend knowledge path syntax by replacing * with {} for references
            General:
            - Make cybol applications work with new communication architecture
            - Provide callback cybol handler for asynchronous writing
            - Provide client closer handler for socket server applications
            - Provide load and unload functionality for cybol library "examples/cybolib/"
            - Remove property "encoding" with value "utf-8" from send and receive, since the tui de-/serialiser does the conversion, similar to http
            - Rename language "event/gui" into "message/gui-request" and language "message/gui" into "message/gui-response"
            - Rename non-existing format "number/double" into "number/fraction-decimal"
            - Add cybol property "mode" with value "write" to operation "dispatch/open" of applications calling operation "communicate/send" with channel "file"
        * Project:
            API Generator:
            - Remove tui/gui/wui properties from api specification, since they represent languages not formats
            - Move generation application files from directory "doc/books/cybol/api/" to "tools/api-generator/"
            - Define useful syntax format for describing cybol api in cyboi source code of directory "constant/format/cybol/"
            - Move comments with parametre lists from directory "src/applicator/" to "src/constant/format/cybol/logic/"
            - Add python script parsing javadoc-like comment blocks (Enrico Gallus)
            - Let python script generate alphatically sorted api data nodes into directory "tools/api-generator/spec/" (Enrico Gallus)
            - Adapt api generator, so that constraints are considered similar to but separate from properties
            - Document api style and generation process in file "doc/development/create_api_documentation.txt"
            API Documentation:
            - Modernise appearance of api documentation by adapting css
            - Add menu with logic operations on the left and menu with state structures on the right
            - Add javascript functions which are marking the currently clicked link with a css class named "active"
            - Merge css and javascript source code into file "index.html"
            - Use css class with style "white-space: pre-line" in order to display text line breaks
            Build Process:
            - Remove directory "test/" with unit tests, since cybol example applications represent test cases
            - Make compiling of cyboi possible on all platforms using docker (Enrico Gallus)
            - Create make target "api" to automate api generation with all its processes (Enrico Gallus)
            CYBOL Editor (CYBOLE):
            - Start development of cybol editor in external project https://github.com/EnricoGallus/cybole (Enrico Gallus)
            - Build it as cross-platform desktop app with JavaScript, HTML, and CSS using https://www.electronjs.org/
            Website:
            - Modernise website to make it responsive using bootstrap 5
            - Remove website from savannah.nongnu.org cvs and add it to subversion (svn) instead
            - Upload website via ftp and host it outside savannah.nongnu.org on private webserver, for easier handling

CYBOP 0.22.0, 2022-02-22, Christian Heller  <christian.heller@cybop.org>

        * CYBOI:
            Communication architecture:
            - Redesign completely to make it yet more uniform, slim and efficient
            - Store communication values in cascade of pointer arrays for (1) internal memory (2) input output entry (3) server entry (4) client entry
            - Realise optional asynchronous communication via enable thread and sense thread
            - Use iso c library "threads.h" being a wrapper for posix "pthread" library
            - Distinguish between standalone client and server-side client stub
            - Provide mutex-protected client requst buffer for each server
            - Provide mutex-protected input buffer and output buffer for each client
            - Detect length prefix or end suffix using message length deserialiser
            - Use low-level functions "read" and "write" instead of stream functions
            - Prepare timeout handling via function "time" and accepttime list
            Interrupt pipe:
            - Introduce interrupt pipe to avoid busy waiting with endless loop
            - Communicate between input threads and main thread via interrupt pipe
            - Let main thread block while waiting for input from interrupt pipe
            - Clean up event (signal) handling in controller checker
            Awakener:
            - Use blocking input for all channels
            - Eliminate busy waiting with sleep time variables
            - Introduce awakener for letting the system send a fake input to itself
            - Wake up blocking sensing threads, so that they can exit themselves
            - Implement terminal awakener using function "ioctl"
            - Implement display awakener using function "xcb_send_event" from "xcb/xproto.h"
            - Wait for child thread to finish using function "thrd_join"
            General:
            - Optimise knowledge path deserialiser
            - Add threader with spinner and cutter for handling thread functions
            - Add porter with locker and unlocker for handling mutex
            - Unify error logging
        * CYBOL:
            Lifecycle:
            - maintain/startup and maintain/shutdown
            - activate/enable and activate/disable
            - dispatch/open and dispatch/close
            - configure/initialise and configure/finalise
            - feel/sense and feel/suspend
            - communicate/receive and communicate/send
            - stream/read and stream/write
            - convert/decode and convert/encode
            - represent/deserialise and represent/serialise
            General:
            - Eliminate cybol property "network_service" (e.g. "http"), since specifying a unique port (e.g. 80) suffices
            - Add property "timeout" to operation "maintain/startup"
            - Store client device identifier in corresponding cybol application (file descriptor, socket number, window id)
            Application "presence":
            - Distinguish request between file path and query with key-value-pairs
            - Make css be transferred as file, since dynamic URL does only work with JavaScript
            - Make header image and heraldic symbol get transferred as static file and not dynamic byte stream
            - Remove "close" from http headers, to not always close http connection
            - Adapt to using stack memory variables
            Applications:
            - Add small files to "communication" demonstrating lifecycle operations
            - Simplify "www_server_dynamic" and delete css
            - Split socket handler in "ui" into action handler and empty message sender, in order to reply to favicon and other requests
            - Test language "message/binary-crlf" in "socket_client" and "socket_server"
            - Make tables that remained empty in "wui" work again
            - Make cybol application "user_interface/gui" work again
        * Project:
            - Move development documentation files and diagrams from "src/" to "doc/development/cyboi/"
            - Update document "doc/development/cyboi/design_decisions.txt"
            - Add diagram "doc/development/cyboi/knowledge_deserialiser.xmi"
            - Create svg images from all diagrams
            - Add comparison table document "doc/development/cyboi/service_lifecycle.pdf"

CYBOP 0.21.0, 2020-07-29, Christian Heller  <christian.heller@cybop.org>

        * CYBOI:
            Socket:
            - Make socket communication work in blocking and non-blocking mode
            - Make initial and follow-up reads work for long messages greater than buffer size in loop of "socket_reader.c"
            - Let file "socket_sensor.c" rely upon function "read_device" using "ioctl" internally, since MSG_PEEK with socket read did not work
            - Implement device access using function "ioctl" for device-dependent request code (command)
            Display:
            - Refactor gui action handling reading out event details (event_name, x, y)
            - Handle window close and resize event
            - Avoid flickering of display by considering only the last in a row of multiple expose events in "xcb_deserialiser.c"
            - Add all possible event types to "x_window_system_starter.c" and "xcb_deserialiser.c"
            - Add gui_event language constant
            - Detect mouse clicks properly by adding parent element's origo
            - Assure proper nesting of gui elements
            - Use default font if none is given
            Terminal:
            - Store stdin/stdout file stream instead of file descriptor in input/output memory, since stream is a more complex structure containing the descriptor
            - Adapt terminal shudown files in order to restore original terminal modes properly
            - Merge common startup/shutdown functionality for unix terminal and win32 console
            - Hold two separate terminal file descriptors for input- and output
            IO Entry:
            - Unify handling of channel startup and shutdown using new input/output entry structure
            - Apply new input/output entry structure to terminal, display, socket
            - Sense client requests on socket and other channels using new "executor/acceptor"
            - Delete outdated directories and files related to sensing threads, which are not used anymore
            - Add new cybol operations "activate/enable" and "activate/disable"
            Bugfix:
            - Filter out non-existing parts in "part_knowledge_deserialiser.c"
            - Use type argument instead of hard-coded wide character for comparison in "detector.c"
            - Use binary mode always for opening files, no matter if reading or writing, in files "file_reader.c" and "stream_file_writer.c"
            - Fix unpredictable errors caused by mixed pointer- and integer calculation in io entry setter and getter
            - Make logger work properly (in debug mode causing log files of a size > 100 MB for cybol application "user_interface/gui/")
            - Use destination type as source type by default in function "apply_modify", so that cybol operations like "modify/empty" lacking a source part work fine
        * CYBOL:
            - Refactor cybol applications "internet/www_server_static/" and "internet/www_server_dynamic/", now being able to handle requests from multiple clients
            - Test image transfer and handling of multiple clients in cybol applications "internet/socket_server" and "internet/socket_client"
            - Delete binary mode cybol property, since it is used by default now
            - Add cybol application "file/copy/"
            - Merge all "Hello World!" cybol applications into "examples/hello_world/"
            - Introduce new cybol base library "examples/cybol/", in order to provide standard functionality such as "print-newline" or "exit"
            - Improve cybol application "user_interface/ui/" with buttons for handling input in tui, gui, wui
            - Make cybol application "user_interface/gui/" work again with coloured rectangles on window expose event and printed message on mouse release event
            - Reorganise cybol application directory "examples/" using sub categories
            - Replace outdated property name "part" with "destination" in all cybol applications using cybol operation "modify/empty"
            - Adapt all cybol applications to use operation "activate/enable" instead of old "live/sense"
        * Project:
            - Add step-by-step development instructions for how to add a new communication channel
            - Add documentation "src/maintenance_properties.ods" comparing cybol startup/shutdown for various channels
            - Add documentation "src/communication_properties.ods" comparing cybol send/receive for various channels
            - Extend CMake test "test/terminal_sensor_test" and make it work
            - Clean up some CMake tests

CYBOP 0.20.0, 2018-06-30, Christian Heller  <christian.heller@cybop.org>

        * CYBOI:
            - Use new io entry structure for x window system for storage in internal memory and remove old display constants
            - Move create functionality of directory "executor/memoriser/creator/" to "applicator/memorise/"
            - Adapt applicators for operations "calculate", "cast", "compare", "logify", "manipulate" to use the type of one operand instead of explicitly given property
            - Optimise and restructure directory with focus on part | item | array, for "calculator", "caster", "comparator"
            - Adapt html serialiser to allow flexible document type
            - Add directory stream reader/writer
            - Add sort operations and implement bubble sorter
            - Add checker for lexicographical comparison, usable for all types, delegating to comparator for primitive types
            - Add file "controller/tester.c" for writing a part's model and properties to a file
            - Distinguish comparison with vector result and scalar result
            - Add part comparator for deep comparison
            - Adapt file "array_comparator.c", so that empty arrays are considered equal now, which is important for parts with empty properties
            - Add verifier for checking if index and count are outside a data array's boundaries, to be used in "item_comparator" and similar files
            - Determine minimum model count of operands before calling functions "compare", "calculate", "cast" (not applicable to "manipulate" and "modify")
            - Delete directory "executor/searcher/" and move content to "executor/" as detector, mover, selector
        * CYBOL:
            - Rename property "element" into "whole_properties" for cybol operation "memorise/create"
            - Rename property "model" into "part" for cybol operation "memorise/destroy"
            - Delete superfluous property "type" in a number of cybol operations like "calculate", "cast", "compare", "logify", "manipulate"
            - Rename cybol operation "smaller" and "smaller-or-equal" into "less" and "less-or-equal"
            - Replace cybol operation "compare/equal" with "check/equal" for "text/plain" and remove property "selection" with value "all", in all cybol examples
            - Add cybol application "repertoire"
            - Add cybol operation "sort/bubble" with boolean property "descending" and use "ascending" as default
            - Extend cybol application "sorter"
            - Add comparison criterion as optional property for cybol sort operations used with compound parts
            - Replace cybol application "string_comparison" with "lexicographical_comparison"
            - Add properties "count", "left_index", "right_index" to cybol operation "compare"
            - Add new cybol application "comparator", covering string comparison via checker as well as boolean result vectors and scalar result values
            - Provide new cybol operations "calculate/minimum" and "calculate/maximum"
            - Rename existing cybol application "calculator" into "calculator_tui"
            - Use cybol application "calculator" for testing arithmetic operations

CYBOP 0.19.0, 2017-04-09, Christian Heller  <christian.heller@tuxtax.de>

        * CYBOI:
            - Replace preprocessor macros with posix-compliant ones
            - Let last preprocessor branch report an error instead of using linux as fallback OS
            - Simplify string arrays in directory "constant/"
            - Delete log message constants and use string literals in source code context
            - Extend knowledge path deserialiser to retrieve all kinds of memory (knowledge, signal, stack)
            - Rewrite knowledge deserialiser and knowledge selector for path () and index [] as well as nested paths and path references
            - Tailor files "handler.c" and "knowledge_part_getter.c" since common code was moved to unified knowledge path deserialiser
            - Merge container functionality "overwrite", "append", "insert", "remove", "empty", "fill" into cybol operation "modify"
            - Reintroduce type comparison of destination- and source part in "modify" applicator
            - Support cybol properties "destination_properties" and "source_properties" in "modify" applicator
            - Evaluate cybol property flag "move" in "modify" applicator, in order to use shallow- or deep copying
            - Adapt modifier functions by forwarding deep copying flag in directory "executor/modifier/"
            - Move stack handling from file "element_part_handler.c" to "part_handler.c"
            - Replace function call "handle_properties" for stack memory variables with "modify_item" (append)
            - Move function call "modify_array" (empty) from "array_deallocator" to "item_deallocator", so that only data array but not count and size trigger it
        * CYBOL:
            - Replace knowledge path character number sign "#" with colon ":" as separator for property access
            - Provide memory root paths ".", "#", "|", for knowledge-, stack-, signal memory, respectively
            - Extend knowledge deserialiser to accept path references, e.g. *.app.node and unlimited nested references, e.g. **.app.node
            - Migrate cybol applications to new knowledge path syntax with mime type "text/cybol-path"
            - Remove old mime types "path/knowledge", "path/reference", "path/stack"
            - Write cybol application "cybol-path" for testing knowledge path variants
            - Delete superfluous property "type" for "modify/" container operations in cybol applications and api documentation
            - Use "destination_properties" property for operation "modify/empty" in cybol applications using it
            - Verify correct execution of cybol application "copier" for testing shallow- and deep copying (cloning)
            - Optimise cybol application "counter_stack_deep" using stack variables
            - Optimise cybol application "tui_control" using stack variables
            - Add cybol application "project_overview"
            - Continue cybol application "clean_result_directory"
        * Project:
            - Add cmake build scripts to new directory "build/"
            - Include doxygen configuration to cmake
            - Add python script "build/cmake/adjustcopyright.py"
            - Move icons and manpages to directory "build/"
            - Move testing functionality from "src/tester/" to new directory "test/"
            - Remove autotools configuration files, since they got replaced with cmake
            - Use file "build/.clang-format" for code formatting
            - Add python script "tools/changeString.py" for simplifying string arrays in directory "constant/"

CYBOP 0.18.0, 2016-12-21, Christian Heller  <christian.heller@tuxtax.de>
        * CYBOI:
            - Provide blocking input on channel "terminal" for "communicate/receive" operation
            - Add cyboi shell commands and cyboi operations of Christopher Stoneking, Christian Szech
            - Add cyboi shell commands of Leonard Franke, Jörg Broy, Richard Lüdtke
            - Add sort algorithms (quick, bubble) as cyboi operations of Alexander Heimann, Julius Krenkel, Paul Müller
            - Add new "chronology" language files for calendar systems
            - Clean up directory "tester/" and related constants and functionality
            - Introduce stack memory
            - Adapt cyboi functions to offer part search by FIFO or LIFO principle
            - Optimise file "knowledge_part_getter.c" using a recursive function call
            - Complete cloning functionality (deep copying)
        * CYBOL:
            - Update cybol schema files
            - Provide access to stack memory from within cybol via format "path/stack"
            - Add cybol application "counter_stack" for testing stack variables
            - Add cybol application "counter_stack_deep" for testing LIFO-principle with equally named stack variables within three nested loops
            - Add cybol application "copier" for testing shallow- and deep copying
            - Add cybol application "addition_user_input" for testing blocking terminal input
            - Add cybol application game "minesweeper" [Minenräumer] of Matthias Thurow
            - Add cybol application game "blackjack" [Siebzehn und Vier] of Dmitry Brodskiy, Sven Haueisen, Jan Wellner
            - Add cybol application game "bullsandcows" (mastermind) of Ronny Zingler
            - Add cybol application "password_generator" of Florian Aurich, Andre Noldin
            - Add cybol application "webstat" of Markus Then, Stanley Sellig, Nico Schallehn
            - Create page links for retrieval of images and css file dynamically in cybol application "presence", so that hostname (ip address) is correct
            - Replace format "text/plain" with "path/knowledge" for some parts of cybol application "tui_control"
        * Project:
            - Add german cybop manual update of Sebastian Wolff, Tobias Thurow
            - Add cybol api update of Christian Schulz, Lena Braun
            - Add doxygen configuration files in directory "doxygen/", for automatically generating source code api documentation with module dependencies
            - Add ide "Code::Blocks" project file and user manual of Kevin Klein, Tobias Donix
            - Add benchmark tool comparing cybol with c++, java, python of Sebastian Kloppe, Patrick Hebner

CYBOP 0.17.0, 2015-04-20, Christian Heller  <christian.heller@tuxtax.de>
        * CYBOI:
            - Prepare gui serialiser and layout serialiser
            - Add randomise operations
            - Add more cyboi shell commands and -operations (Maximilian Brenner)
            - Complete socket functionality and keep client socket integer array internally
            - Define symbolic names as variable values at startup
            - Create input/output entry structure for all kinds of services
            - Optimise endless loop checking for signals/service interrupts in controller (eliminate some sensing threads)
            - Loop and close all services at shutdown
            - Merge input/output filters for various channels in chain (device|compression|encoding|language+format|knowledge)
            - Distinguish low-level reading/writing in directory "executor/streamer/" from "executor/communicator/" as central i/o point
            - Reactivate and update http-request/http-response/uri de-/serialiser
            - Implement xml serialiser
            - Implement cybol element/part serialiser
            - Introduce new channel "clock" for reading and adjusting time and date
            - Introduce new channel "randomiser" for sowing a seed and generating random numbers
        * CYBOL:
            - Update api generator
            - Provide syntax files in XML, JSON, self-defined "short" notation in new directory "doc/books/cybol/syntax/"
            - Rename all xml tags (model, part, property, constraint) uniformly to just "node"
            - Add "string_comparison" cybol application
            - Add "randomiser" cybol application
            - Add "arithmetics" cybol application
            - Rewrite "calculator" cybol application (Sibylle Hebenstreit, Marc Jäkel, Andreas Burkhardt)
            - Add "tictactoe" cybol application (Sandra Rum, Stephan Griese, Thomas Schulze)
            - Add "socket_server" and "socket_client" cybol applications
            - Add "www_server_static" and "www_server_dynamic" cybol applications
            - Continue "presence" cybol application with css, calendar week navigation, favicon, uri generation
        * Project:
            - Update cybol api specification (Max Müller-Domhardt, Sebastian König)
            - Add "cybol_generator" gui designer based on C++/Qt (Pit Braunsdorf, Sophia Kledzinski)

CYBOP 0.16.0, 2014-03-31, Christian Heller  <christian.heller@tuxtax.de>
        * CYBOI:
            - Add new mime type constants (Franziska Wehner)
            - Add iso character set constants (Franziska Wehner)
            - Provide values for command line argument "--test", in order to call one test unit at a time
            - Restructure test units (Melanie Fricke, Philipp Engelmann, Paul Stengel)
            - Redesign compound copiers/setters/getters for complex/datetime/duration/fraction
            - Complete decimal- and vulgar fraction calculator and comparator
            - Add cartesian- and polar complex calculator and comparator (Tony Kreißl, Sascha Kühnel, Kevin Wettermann)
            - Add boolean and bitwise logic operations (Tony Kreißl, Sascha Kühnel, Kevin Wettermann)
            - Add directory "executor/container/" with operation comparing if a bounded area contains a given value
            - Add platform-independent shell commands (Alexander Müller, Kevin Glück)
            - Continue gui serialiser
            - Add layout serialiser
            - Add datetime compound structure based on julian day (int) and julian second (double)
            - Add time scale gregorian_date/julian_date/jd/mjd/tjd/tai calendar de-/serialiser
            - Add new entries to xdt de-/serialiser (Birgit Heller)
            - Extend xdt selectors following BDT/KVDT/GDT standard documents (Florian Pachel)
            - Add knowledge path extension for accessing node name using parentheses, e.g. .app.wui.(.app.var.page_name).body.table
            - Add visual studio c adaptations (Mike Feustel, Benno Schilling)
            - Add compilation changes for Apple Mac OSX (Markus Hinkelmann)
        * CYBOL:
            - Add "datetime" cybol application for testing various date formats
            - Add "ui" cybol application with tui, gui, wui
            - Add "calculator" application with tui (Cedric Thomas)
            - Create tool "tools/field_description_xdt_model_generator/"
            - Create tool "tools/xdt_field_description_serialiser_generator/"
        * Project:
            - Add slides for short lightning talk on cybop to directory "doc/lightning_talk/"
            - Add brochure to directory "doc/presentations/prospectus/"
            - Add shell script "dist/prepare_release.sh"

CYBOP 0.15.0, 2013-09-22, Christian Heller  <christian.heller@tuxtax.de>
        * CYBOI:
            - Improve channel interrupt detection outside threads in main loop
            - Complete x window system receiver
            - Complete win32 display receiver
            - Complete win32 console receiver
            - Add further "access/" cybol operations
            - Provide first working version of xdt deserialiser, to be used in Res Medicinae tool "xdt2html" (partly by Birgit Heller)
        * CYBOL:
            - Create tool "integer_number_generator" to generate integer number constants

CYBOP 0.14.0, 2013-05-31, Christian Heller  <christian.heller@tuxtax.de>
        * CYBOI:
            - Port to win32 api using mingw and pre-processor defines (Tobias Köhler)
            - Enable terminal output under windows using win32 console functionality
            - Split logger into several files and add windows system error log function
            - Fix serial port interface (Tobias Köhler)
            - Migrate x window system event receiver from xlib to x c bindings (xcb)
            - Add bit manipulation functions, e.g. "clear", "set", "shift_left", "rotate_right"
            - Add bit logic operations, e.g. "and", "xor"
            - Add calculator and comparator for types double and pointer (Marcel Wesberg)
        * CYBOL:
            - Add unix- as well as windows shell commands in a platform independent manner (Falco Prescher)
            - Add language "message/cli" using command-line output, other than "message/tui" which uses whole screen terminal output
            - Update gui cybol application
        * Project:
            - Update cybol api specification (Johannes David)
            - Update beginner's manual and translate into English (Tim Illner)
            - Add cybol source editor "Cybol-Eclipse-Plugin" (Michael Dietrich)
            - Add cybol source editor "cybol_web_creator" (Axel Petzka)
            - Add cybol source editor "Visual_Cybop" (Alexander Papenfuß)

CYBOP 0.13.0, 2013-03-29, Christian Heller  <christian.heller@tuxtax.de>
        * CYBOI:
            - Implement new version of xdt deserialiser, needed for German medical data formats bdt/gdt/ldt
            - Add character encodings: ascii, iso-8859-1, iso-8859-15, windows-1252, c0 and c1 control codes of iso 6429
            - Adjust reference counting to make rubbish (garbage) collection work correctly
            - Add communication channel "serial_port" for talking to microcontroller device via usb
            - Add terminal mode line speed serialiser necessary for converting integer to POSIX.1 baudrate symbols
        * CYBOL:
            - Simplify cybol files by removing attributes like "encoding" and "language"
            - Add new operations run/sleep-second, run/sleep-nano, modify/fill, cast/character, cast/double, cast/integer
            - Add format "number/byte" in addition to "text/ascii", both internally mapped to "unsigned char"
            - Add application "indoor_climate"
        * Project:
            - Add cybol editor of Benjamin Teßmar and Sebastian Brückner
            - Add cybop-python comparison article of Max Brauer

CYBOP 0.12.0, 2012-08-22, Christian Heller  <christian.heller@tuxtax.de>
        * CYBOI:
            - Advance ansi escape code generator
            - Add or update container functions: get, count, indicate (empty or exists), insert, remove
            - Improve terminal input and -output
            - Replace optionaliser with command line deserialiser
            - Simplify cyboi command line so that "--knowledge" argument is the default
            - Update html serialiser with switchable formatting
            - Implement handling of index in knowledge path
            - Implement character reference de-/serialiser for numeric character reference (hexadecimal and decimal) and entity reference
            - Prepare percent encoding de-/serialiser
            - Add decimal fraction de-/serialiser and calculator of Falk Müller
        * CYBOL:
            - Make cybol application "ui_control" work again
            - Add applications get_count, addition_using_indices, index_usage, knowledge_tree_access, addition_using_serialisation, wui, tui, double
            - Generate cybol application programming interface (api) specification from cybol files using html format (largely contributed by Enrico Gallus)
            - Add new operations: represent/serialise, represent/deserialise, access/get-name
        * Project:
            - Add "cybol_extension" tutorial (Falk Müller)

CYBOP 0.11.0, 2012-06-08, Christian Heller  <christian.heller@tuxtax.de>
        * CYBOI:
            - Restructure executor directory
            - Redesign modules for comparison, calculation
            - Reimplement container framework using compound hierarchy part-item-dataarray-value
            - Provide functions for copy/get/overwrite/append/insert/remove
            - Split translation into representer for de-/serialisation and converter for de-/encoding
            - Distinguish between language (e.g. text/cybol) and data format (e.g. number/integer) valid within the language
            - Increase execution speed by using integer values instead of strings for runtime cybol meta attributes
            - Restructure many constants into state- and logic directories
            - Implement rubbish (garbage) collector in directory executor/referencer/ using new part field
            - Debug a number of logical errors
            - Debug memory allocation errors occuring on 64 Bit machines, using the valgrind memcheck tool
            - Move test files into testing directory
            - Simplify creation of model diagram output using special test function calls
        * CYBOL:
            - Add applications counter, addition, time_output, shell_output (for sequence, branch, loop)
            - Complete list of cybol meta attributes: name, channel, encoding, language, format, model
            - Decide that operations are distinguished by their format (type) and NOT model any longer
        * Project:
            - Add (German language) beginner's manual written by two students
            - Move project to GNU Savannah developer portal, since berliOS announced to close end of 2011
            - Move website documents from directory doc to www
            - Add directory www to CVS, as required by GNU Savannah

CYBOP 0.10.0, 2011-02-27, Christian Heller  <christian.heller@tuxtax.de>
        * CYBOI:
            - Provide more specific global variables of primitive data type sizes
            - Add new primitive functions (assign, compare, add)
            - Unify array functions for all primitive data types
            - Restructure and clean up various container functions (append, replace etc.)
            - Factor out some controller functionality into sub directories (globaliser, checker etc.)
            - Restructure test functions
            - Complete tcp socket handling for web user interfaces
            - Optimise xml decoder functions
            - Add http request decoder
            - Add uri decoder (including percent-encoded characters)
            - Add html encoder
            - Add http response encoder
        * CYBOL:
            - Add cybol application http_communication
        * Project:
            - Convert source code repository from Concurrent Versions System (CVS) to Subversion (SVN)

CYBOP 0.9.0, 2009-02-07, Christian Heller  <christian.heller@tuxtax.de>
        * CYBOI:
            - Complete interrupt mechanism and sleeping for different communication channels (CYBOI-internal signal, text- or graphical user interface, socket)
            - Use Unicode (instead of formerly ASCII-) character code, UTF-8 encoding, wide characters
            - Restructure constants into four categories name, channel, abstraction, model
            - Change abstraction constants to follow MIME type-like style
            - Replace libxml2 with a self-written XML parser
            - Add a corresponding CYBOL parser, to be called right after the XML parser (like two filters called in a sequence)
        * CYBOL:
            - Use MIME type-like values for the abstraction xml attribute
        * Project:
            - Switch from 32 Bit- to 64 Bit architecture by adapting autoconf/ make files

CYBOP 0.8.0, 2007-05-28, Christian Heller  <christian.heller@tuxtax.de>
        * CYBOI:
            - Restructure CYBOI command line argument handling to allow for dynamic log file, log level etc.
            - Recognise command line options: version, help, test
            - Implement file output of text, now available in CYBOL
            - Implement shell input, output, error output, now available in CYBOL
            - Complete serialiser converting cybop knowledge models into structured text called "model diagram" (good for debugging cybop knowledge models)
            - Generate formatted xhtml code, with tags and attributes, from CYBOL
            - Provide first version of web user interfaces (wui) using tcp socket (not usable yet)
            - Complete parser converting the German X Datentraeger (xDT) medical exchange format into CYBOI knowledge models
            - Add opengl startup and shutdown
            - Add new test procedures
            - Internal improvements and bugfixes
        * CYBOL:
            - Update cybol applications
        * Project:
            - Add opengl/ mesa libraries to makefile

CYBOP 0.7.0, 2006-09-09, Christian Heller  <christian.heller@tuxtax.de>
        * CYBOI:
            - Update and add more things for wide character handling
            - Prepare access to meta elements of a compound double hierarchy; two knowledge tree separators are now possible: the part separator . and the meta separator #
            - Restructure compound handling, so that functions now get handed over the compound model and corresponding compound details (meta information)
            - Provide universal "get" function, so that CYBOL knowledge templates can be written much more flexibly, since models can be given as
                1 hard-coded inline value
                2 hierarchical name to a model (= encapsulated model)
                3 hierarchical name pointing to another hierarchical name containing a model (= double-encapsulated model)
            - Implement threads using mutexes (atomic flags) for reception of signals via x window system and linux console (terminal)
            - Interrupt (exit) and free resources of all receive service threads automatically at system shutdown, which is necessary in case a CYBOL application developer forgot to do that
            - Rework textual user interface (tui) handling; introduce windowing technique
            - Implement selective repaint; small areas instead of the whole textual user interface (tui) can be repainted now
            - Implement x window system gui event handling
            - Add unix shell command processing from within CYBOL
        * CYBOL:
            - Add a number of new model constants (boolean operations, bit manipulation operations etc.)
            - Remove CYBOL_ABSTRACTION everywhere and replace with COMPOUND_ABSTRACTION, which existed in parallel
        * Project:
            - Add libpthread library to Makefile, for linking
            - Add minor things to Makefile, for Linux-Windows platform compilations, so that conditional preprocessor directives like: #ifdef LINUX_OPERATING_SYSTEM can be used in the source code
            - Provide source code tar balls (tar.gz), as pre-condition
            - Update Debian packages
            - Sponsor Debian packages and upload to testing distribution

CYBOP 0.6.0, 2005-08-29, Christian Heller  <christian.heller@tuxtax.de>
        * Project:
            - Adapt Makefile to restructured source code directories
        * CYBOI:
            - Prepare terminal handling of Textual User Interfaces (TUI); (see Zemljanka and TurboVision)
            - Debug many errors caused by NULL_POINTER checks which tested the variables instead of their dereferenced values
                wrong: if (a != NULL_POINTER)
                right: if (*a != NULL_POINTER)
                this caused knowledge models not to be created/ added to the knowledge root/ whole model
            - Replace NULL_POINTER with &NULL_POINTER, where a local void** variable is initialised
            - Remove all const keywords before static variables and before parameters in headers of procedures, for less code, improved readability and because the const keyword is considered useless now:
                (1) pointers that were handed over do mostly not get manipulated directly anyway, only pointers within the array pointed to
                (2) arrays defined with = {} are constant anyway
            - Delete all character counts and replace them with just one count constant
            - Change and unify all comparisons, so that their if expressions now compare for equality with 0 instead of 1
            - Replace constant count variables with the already existing integer counts, to save redundant code and also some memory, e.g.:
                static const int COMMA_CHARACTER_COUNT_ARRAY[] = {1};
                static const int* COMMA_CHARACTER_COUNT = COMMA_CHARACTER_COUNT_ARRAY;
                replaced with:
                static const int* COMMA_CHARACTER_COUNT = NUMBER_1_INTEGER_ARRAY;
            - Delete superfluous source files for primitives; only vectors are used now everywhere
            - Rename string to character vector
            - Simplify source code by replacing POINTER_NULL_POINTER, INTEGER_NULL_POINTER, FILE_NULL_POINTER etc. in all source files with just NULL_POINTER
            - Replace allocate_integer and others with more general procedure allocate
            - Prepare send_terminal procedure for tui output
            - Rename low-level receive/ send into read/ write, to better distinguish them from the high-level receive/ send CYBOL operations
            - Rename low-level create/ destroy into allocate/ deallocate, to better distinguish them from the high-level create/ destroy CYBOL operations
            - Rename file set.c to copy.c
            - Add knowledge memory and signal memory to internal memory; this HAS TO BE DONE, because when using threads, ONLY ONE parameter (the internal memory) can be handed over to these
            - Hand over internal memory, knowledge memory and signal memory as parameters, instead of reading them every time from internal_memory
            - Rename internals_memory to internal_memory
            - Adapt some include paths and procedure names after restructuring
            - Delete memory managers and put code into general manager.c
            - Write log messages to a file instead of to console
            - Replace all American English (e.g. lize suffixes) with British (Commonwealth) English (e.g. lise) which is now consistently used throughout all source code
            - Move directories communicator, converter and translator from parent directory controller to parent directory memoriser
            - Rename directory computer to applicator
            - Restructure source code directories in relation to von Neumann computer architecture, i.e. consisting of the parts:
                memoriser (Memory, containing states)
                controller (Control Unit, coordinating flow)
                applicator (Arithmetic Logic Unit = ALU, containing logic)
                globals (additional, global constants and variables)
                tester (additional, for testing)
        * CYBOL:
            - Add some abstraction- and structure constants

CYBOP 0.5.0, 2005-06-28, Christian Heller  <christian.heller@tuxtax.de>
        * Project:
            - Create Debian Packages cybop, cybop-papers, cybop-presentations, cyboi-dev
            - Move additional application packages like resadmin etc. to Res Medicinae project
        * CYBOI:
            - Complete implementation of the loop operation
            - Correct bug in get_new_signal_id of signal_memory_accessor.c
            - Implement Web User Interface (WUI) handling by generating (translating) HTML from CYBOL (comparable to XUL/ UIML)
            - Extend sources for handing over string parameters in URL, using escape code sequences
            - Add url_refresh operation
            - Implement post operation for web communication
            - Add new abstraction knowledge for runtime access to knowledge model
            - Enable dynamically created logic models
            - Generalise handling of services using startup/ shutdown operations
            - Run tcp service in an own thread
            - Synchronise signal memory using Mutex
            - Use send operation for placing runtime signals read from a CYBOL source into the signal memory
            - Restructure source directories, following von Neumann architecture (controller, memory, computer, globals)
            - Remove /web directory (tcp procedures are now in receive_tcp_socket.c; client socket and signal numbers are in internals_memory_accessor.c)
            - Remove input_output_activator.c (now done by startup/ shutdown and receive/ interrupt/ send service calls in CYBOL)
            - Remove input_output_handler.c (activation/ blocking flags etc. are now created/ destroyed in corresponding startup/ shutdown procedure)
        * CYBOL:
            - Get Res Admin application with web frontend running
            - Remove all examples prefixes from model directory names in Res Admin application
            - Replace helloworld_with_shutdown through helloworld_dynamic_logic
            - Rename configuration.cybol to run.cybol in all CYBOL applications

CYBOP 0.4.0, 2005-03-01, Christian Heller  <christian.heller@tuxtax.de>
        * Project:
            - Debian Packages cyboi-doc and cybol-examples
        * CYBOI:
            - Move global variables and constants into special files
            - Use encapsulated primitives so that pointers can be handed through the system, instead of copies of char, int, double etc.; encapsulation is also necessary to preserve a primitive's value in memory -- otherwise, their value gets lost as soon as a parser procedure is left
            - Complete system lifecycle and waiting loop
            - Simplify configuration file which now consists of solely key-value pairs, on just one level, NOT hierarchically
            - Store configuration values internally in a simple pointer array instead of an extra data structure; it is not necessary to store additional type information in a second column of the internals memory, because internals are ALWAYS simple pointers to some date structure that was created outside the internals memory
            - Adapt whole system to new configuration handling
            - Factor out code from cyboi main function into separate files and procedures, for better overview
            - Change all get procedures in arrays, so that only references, but NOT copies are delivered back; change system accordingly
            - Change complete CYBOI system from unnecessary triple-referenced pointers to simple ones
            - Only hand over those variables as double reference which:
                (1) will carry a result to be delivered back
                (2) have to be treated as array
            - Remove signal from signal_memory only AFTER the signal has been handled
            - Correct A LOT OF bugs causing segmentation faults at runtime
            - Get Hello, World! application running
        * CYBOL:
            - Create first applications exit and helloworld
            - Prepare resadmin application with web frontend

CYBOP 0.3.1.1, 2004-12-06, Christian Heller  <christian.heller@tuxtax.de>
        * CYBOI:
            - Mark /etc/cyboi/config.cybol as configuration file
            - Add CYBOI manpage cyboi.1.gz

CYBOP 0.3.1, 2004-11-23, Christian Heller  <christian.heller@tuxtax.de>
        * Project:
            - Debian Package for CYBOI interpreter
        * CYBOI:
            - Prepare TCP/IP sockets
            - Change handling of internals

CYBOP 0.3.0, 2004-09-13, Christian Heller  <christian.heller@tuxtax.de>
        * Project:
            - Compile CYBOI under Windows OS, using GNU C compiler and CYGWIN
        * CYBOI:
            - Communication over Sockets
            - Reimplement compound model, according to new CYBOL structure
            - Continue XML parser, using libxml2 as temporary solution
        * CYBOL Core:
            - Rethink CYBOL structure
            - Create simple CYBOL file just exiting the application

CYBOP 0.2.2, 2004-06-23, Christian Heller  <christian.heller@tuxtax.de>
        * CYBOI:
            - Fix several bugs in model handling
            - Create transient copies of all persistent sources, instead of pointing to persistent sources which get freed after some time which resulted in null pointers
            - Extend number of command line parameters, providing more options for running CYBOI
            - Enable reading of sources from inline and file location

CYBOP 0.2.1, 2004-06-11, Christian Heller  <christian.heller@tuxtax.de>
        * CYBOI:
            - Correct determination of highest priority index in signal memory
            - Restructure project directories: /constants --> /constant; /model --> /array; /model --> /state; /statics --> /state; /dynamics --> /logic
            - Move operation (being state knowledge) to /state
            - Bundle all constants in just one place
            - Use more constants, instead of hard-coded values
            - Introduce constants for log messages
            - Improve logger; removed all dependencies from other project parts (like array)
            - Hand over size and count as parameters; do not keep them in one array with pointers
            - Prepare processing of compound signals
            - Factor out two procedures handle_create_model_signal and handle_send_signal from handle_operation_signal
            - Adapt create_model procedure to read cybol sources from several locations like inline|file|ftp
            - Add test procedures in an own testing module
            - Prepare processing of compound signals

CYBOP 0.2.0, 2004-04-29, Christian Heller  <christian.heller@tuxtax.de>
        * Project:
            - Write make files for building CYBOI interpreter from C sources
        * CYBOI:
            - Rewrite CYBOI in C programming language
            - Start writing or using an existing XML parser (like libxml)
            - Insert first graphics drawing routines (xlibs)
        * CYBOL Core:
            - Eliminate java object tags

CYBOP 0.1.0, 2003-09-11, Christian Heller  <christian.heller@tuxtax.de>
        * Project:
            - Split java sources into CYBOL and CYBOI
        * CYBOI:
            - CYBOI is an interpreter that can read CYBOL files and create systems
            - Write CYBOI in Java
            - Catch events from Java AWT event queue
            - Use the Apache Xerces XML parser
            - Create static structures of instances in memory
            - Run dynamic loop catching signals from internal signal memory (queue)
            - Create GUI using Java Swing (as temporary workaround)
            - Create CYBOI by renaming and altering the ResMedLib base library of the Res Medicinae project
        * CYBOL Core:
            - CYBOL is based on XML syntax
            - One file represents an abstract item/ category/ class/ hierarchy
            - Other files can be linked as complex data types
            - Primitive data types are treated as final abstraction
            - Include inheritance

CYBOP 0.0.7, 2003-06-23, Christian Heller  <christian.heller@tuxtax.de>
        * (no history)

CYBOP 0.0.6, 2003-04-28, Christian Heller  <christian.heller@tuxtax.de>
        * (no history)

CYBOP 0.0.5, 2003-03-15, Christian Heller  <christian.heller@tuxtax.de>
        * (no history)

CYBOP 0.0.1-0.0.4, 1999-2003, Christian Heller  <christian.heller@tuxtax.de>
        * See http://www.resmedicinae.org/
