ACDK Core (acdk_core)acdk_core contains the core distribution of ACDK.
Content of this chapter: |
acdk_core contains the core distribution of ACDK.
none
acdk::lang; acdk::lang::dmi; acdk::lang::sys; acdk::lang::ref; acdk::lang::reflect; acdk::io; acdk::util; acdk::util::logging; acdk::locale; acdk::security; acdk::tools::aunit; acdk::cfgscript; acdk::tools::mc; acdk::tools::acdkmc;
Roger Ren� Kommer (kommer@artefaktur.com).
ACDK Free Edition License. See License.
The ACDK Core package contains the basic tools and libraries of the ACDK framework. Theacdk_core library includes the basic classes in the namespaces acdk::lang, acdk::util, acdk::io, acdk::lang::reflect, and acdk::lang::ref (corresponds to java.lang, java.io, java.util, etc.) and establish a powerfull and simple framework, with most features known by Java or C#.acdk_core also implements the basic reflection, late binding and object oriented integration of scripting languages. Additionallyacdk_core contains a logging framework similar to frameworks like log4j. The Metacompileracdkmc add Metainfo like runtime type information, support for ClassLoader and attached Attributes to C++. Because software quality is direcly connected to the availability of a testing framework the unit test frameworkacdk_tools_aunit is included in the ACDK Core package. The libraryacdk_security contains some basic encryption functions. The scripting language CfgScript is a full featured object oriented scripting language with Java/ACDK syntax, which does not only allow to instrument all ACDK classes in scripts, but also define own ACDK classes. Detailed documentation about ACDK, with handbook and API reference is available online or for download.
Nothing at the moment.
=========================================================== 4.14.0 - all: boost performance for most platforms and compilers: - using compiler build in static thread local if possible If acdk_core.dll/so itself is not static linked to the the executable still use pthread/Win32 thread local - with the -acdk-sp command line option for single CPU machines atomic operations (int++) will not be synchronized. - acdk::lang::String caches the calculated hashCode, which is great performance improvement if intensivelly used HashMaps with String as keys. String::equals first check if hashCodes of two Strings are identical. with the ASCLITERAL/StaticAsciiLiteral literals can be defined static with precalculated hashCode, which boosts the equals method. - Thread::suspend(), and Thread::stop() implemented. The suspend or stop a thread it has to be in a waitable status (Object::wait(), Thread::sleep(), Thread::join(), Process::waitFor()). - Thread::terminate() implemented. This method 'kills' a thread immediatelly and does no cleanup or releasing locks. - Implemented Process::suspend() and Process::resume. - Add unicode encoding with and without C-Escapes (AsciiUtf and AsciiCEscUtf). - String: fixed memory leak in normalize(). - add acdk::lang::sys::core_memtrace to trace memory leaks and / or to profile memory usage. - MS compiler: if C structured exceptions are available the -> operator on Reference Objects (like o->toString()) does not longer check for NullPointer, but uses the C exceptions to detect null pointers and throw NullPointerException. - acdk::lang::String: Add various convenience methods inspired from the Java apache package StringUtils, like defaultString, isEmpty, isNotEmpty, isBlank, isAlpha, isAlphaSpace, contains, containsNone, containsOnly, indexOfAny, lastIndexOfAny, join, split, deleteWhitespace, repeat, rightPad, leftPad, center, indexOfDifference, getDifference. - Unicode characters > 0x0237 where misinterpreted. The new unicode character table should be fixed now. - Locales are for ~ 130 languages/countries are available. The Locale settings for various localized names and formats are now defined in properties (acdk_core/cfg/acdk/locale). - if class static RObject create_instance() defines, it does not need extended metainfo to use Class::forName()->newInstance(). - The default Locale and encoding is initialized from the underlying operation system. Add Locale::setSystemLocale() family in case of using/synchronizing c library calls. - acdk_tools_aunit: add acdk::tools::aunit::CfgScriptTestCase and acdk::tools::aunit::CfgScriptTestSuite for integrating CfgScripts as unit tests. - All: parse -Dkey=value options for setting system properties values. - acdk::util::RessourceBundle: fixed various bugs. - acdk::util::Properties: fixed various bugs loading/storing properties from/to file. - acdk::util::Properties: add eval() method to replace $(KEY) expression with properties value. - map common runtime configuration options in System::properties. Please refer also to acdk_core/cfg/acdk.cfg for available values. - All: deleted or replaced LATIN1 characters in code - All: Supports Visual Studio 2005 Express Beta. - All: Remove senseless warnings in Visual Studio while preprocessing for dependencies. - Unix platforms: fixed Object::wait(ms) with ms > 0 on some unix platforms (linux). - Throwable can have a nested cause (like in JDK 1.4). Introduced StackFrame interface for serializable backtrace information. - Removed all deprecated TMC1 macros. - CfgScript: getClass/GetClass also works with basic types. - Fixed various performance bottlenecks in the CfgScript interpreter. Performance improved for a factor of 3 - 30. - acdk_core: support for -logcat [category] and -logto [logtype or file] for all acdk applications (see ACDK Logging framework); - acdk::util::Properties: add PropertiesChangeListener to listen on changes on Properties. - CfgScript: not only allow to cast any to type, but also type to any. This has the result that functions with DmiObject parameter accepts any parameter. - acdk::io::FileSystem revised. FileSystem plugins are now configured in the the properties (acdk.cfg by default). Opening files with file://, http://, ftp://, .zip@ and .tar@ files will automatically load the the corresponding FileSystem plugins. - CfgScript/DMI: Provide new ScriptGlobals functions, like inOf, outOf, byRef, byVal, etc. (preparation for acdkx_rdmi). - CfgScript: support unix hashbang (#!) lines. - CfgScript: Implement JSP like templates for CfgScript. - String::equals() use cached hashCode to improve performance. - Arrays: add methods to use array as stack, like pushFront, popBack. - ObjectArrays: add methods to convert to and from ArrayList directly - ClassLoader: support for library aliases defined in the propertyfile acdk.lang.ClassLoaderAliase (cfg/acdk/lang/ClassLoaderAliase.properties). - CfgScript: foreach is allowed also for String or StringBuffer (foreach (char c in StringOrStringBuffer) {}) - acdkmc: Parsing header with "class UPPER_CASE_MACROS MyClass" fixed. The macro is not limited to ACDK_ or ACDKX_ macros. - Object finalization: lock memory if this will be referenced inside finalize or destructor. - using the THROWx-Statements a throwable can be intercepted after constructed, but before throws using the acdk::lang::ThrowListener interface. - CfgScript: create a DmiDelegate object from a short Script string. - CfgScript: enhanced Props class. clone() is supported. A Props can itself render as CfgScript code. - acdk::lang::Number (and other, like Integer): Support of non latin unicode digits in parsing. Locale support parsing, stringifing float, double values. Extended support for parsing with leading whitespaces or trailing characters. - acdk::lang::Number: fixed parsing literal 0xFFFF (previous the last F was interpreted as type hint. - acdk::util::Properties: fixed loading properties files with backslash at the end of the line. - MetaInfo: MetaInfo can now be unloaded (needed for CfgScript debugger). - CfgScript: support backtick expressions likes = `"j + 1 is ${i + 1}"`;
and transparent invocation of external programs. - acdk::util: Some classes where ports from the GNU Classpath (back in 1999). Added corresponding license notes. - Complete ACDK: Removed the QPL license. ACDK is distributed only with LGPL license from now. - CfgScript: Implemented a command line debugger. Start acdkcfgscript with -csfdebug option. - CfgScript: Fixed some bugs in inheritance casting and invoking. - CfgScript: add build in support for ACDK_LOG() and ACDK_NLOG(). - CfgScript: add support for interfaces declared in CfgScript. - CfgScript: Fixed bug in CfgScript ClassLoader - CfgScript: support for -csfscript argument and/or CSFPATH environment for search path for the CfgScript ClassLoader. =========================================================== 4.13.0 - all: Port to Solaris 9 and 10 i386. - acdk_core: String with empty string will use always the same instance of String. - acdk_core: Threads on linux with new posix threads initionalization race condition fixed. - acdk_core: fixed deadlock situation in threaded garbage collecting. - CfgScript: Support for exponential numbers, numbers with postfix to declare the type (12l for a long value). - CfgScript: Support for unicode character escape encoding. - acdk_core: StringBuffer fixed bug in append for gcc 2.9x. - Literals in ACDK C++ with unicode character (other than 7 bit ascii characters) are encoded with "\\uxxxx" escape sequences. Literals in C++ code containing unicode character are wrapped with the _US() (for strings) or _UC() (for single character) macros. The old macros based on local source file encoding (latin-1) are no longer supported. - new Macro THROW_INSTANCE to throw an throwable instance which uses meta info to throw the corresponding reference type. - extended acdk::util::StringTokenizer with Java compatible delimiter (each char in the delimiter string is a delimiter). Improved also performance. - implemented acdk::util::IdentityHashMap - implemented acdk::util::EventObject, EventListener, EventListenerProxy - acdk::lang::String: implemented intern() corresponding to Java. - acdk::util::ResourceBundle: implemented supporting .properties files (see API documentation) - CfgScript: implement basic debugging methods - CfgScript: Fix evaluation of 'if (x) ; else if (y) ; else ;' - CfgScript: Other minor bug fixes - All: Fix compatibily to VC 8 (2005) =========================================================== 4.12.0 - extend acdk::io::File with acdk::io::FileInfo and possibility to make a file read only - Logger are now scoped. A configured logger with name "a.b" will be used if a name log entry "a.b.c" will be logged. - Bug fix using copy constructor of Object or derived. - All packages: project files for BorlandX currently for Windows and Linux (debug) - Fixed acdk::io::FileReader. It now opens file in read only mode - Implemented class acdk::io::FileInfo and possibility to change file attributes (chmod). =========================================================== 4.11.0 - Bug Fix: Fixed memory leak in ObjectArray on growing arrays. - acdkmc: support pseudo keyword 'final'. If class or method is tagged with the keyword 'final' not dmi proxy will be generated for this class/method by acdkmc. - New CfgScript: Supports lambda expressions. - New CfgScript: Logical operators (|| and &&) are evaluated like in Java/C++ (short circuit logical expression evaluation). - CfgScript: Fixed problem with evaluating complex expressions. - CfgScript/aunit: Added a GUI testrunner for ACDK Unit tests. - Fix minor bug in BufferedWriter. - Introducd acdk/Version.h =========================================================== 4.10.0 - New implementation of the CfgScript language. Refer to CfgScript Handbook. - New: Introduced DMI-Proxies Subclassing. - New: Possibility to use non-ACDK classes/struct with a ACDK object framework ( References. - New: introduce Object::_cast and dmicastto allow extended casts between different implementation languages. - New: template version of the container Framework: acdk::util::TCollection. - New: ClassLoader with plugin ClassLoaders. - New: Completed IO-Framework for CharReader/Writer. - New: On low memory situations Allocator try to free memory with the Garbage Collector and throw OutOfMemoryError exception if no memory cannot be allocated. - New: Limit maximum usage of memory globaly or on thread basisc. (Currently only works with the default heap PagedHeap.) - New: enhanced test framework to write test reports. - New/Fixed: Logging framework - New: Provide ExtObjectVal to wrapp foreign classes/structs as an ACDK object. - ScriptVar and DmiObject: various fixes and enhancements. - Strings: Fixed some bugs in Unicode implementation - Strings: Optionals automic converter from and to MFC CString class. - Process: fix minor issues. - File: list can list files recursivelly - DMI: Fixed some issues of DMI calling with named arguments and implemented support for calling with rest and named rest - Encoding: Fix length of the encoding tables. =========================================================== 4.04 - 4.09 Internal releases for a Customer. =========================================================== 4.03.0 - Added classes RollingFileConsumer and TransactionConsumer to acdk::util::logging. =========================================================== 4.02.1 - Fixed bug in acdk::lang::String initialized with UTF8 bytes - Fixed bug in acdk::lang::String initialized with RuccharArray bytes - Fixed shareing bug in String::append. =========================================================== 4.02.0 - Configuration and documentation fixed Please refer also to ChangeLog. =========================================================== 4.02.0 - Introduce ACDKPATH in System and ClassLoader to search additionally libraries. - Modified trim to enable also triming control (like "\n"). - Configuration and documentation fixed =========================================================== 4.01.1 - Reorganized DMI ClazzInfo. Flags are available in the acdk::lang::dmi namespace. Meta Info structures may have parent link. - Ajustments to acdkmc and all ACDK modules reflecting the modified ClazzInfo. - Fixed bug in acdk::io::FileSystem and acdk::io::StandardFileSystem not closing directory handle on unix platforms. =========================================================== 4.00.2 - Because code duplication between acdk_tools_mc and acdk_make created new shared library acdk_cfgscript which contains the tiny CfgScript interpreter. CfgScript is used in ACDK Meta Attributes and in ACDK Make. Improved CfgScript interpreter. - Introduce ACDK_TOOLS_HOME env and -acdk-tools-home command line options to enable acdk tools running outside ACDKHOME. =========================================================== acdk_core 4.00.1 - unicode - add character encoding in to acdk::locale: US-ASCII, AsciiUtf, ByteAscii, C-Escape, 8859-1, LATIN-1, 8859-2, 8859-3, 8859-4, 8859-5, 8859-6, 8859-7, 8859-8, 8859-9, 8859-10, 8859-13, 8859-14, 8859-15, 8859-16, CP1250, CP1251, CP1252, CP1253, CP1254, CP1255, CP1256, CP1257, CP1258, IBM-850, UCS2, UCS2-LE, UCS2-BE, UTF8 - class acdk::lang::String can hold ASCII, UCS2, UTF8. Will be enhanced with UCS4 and Ansi encodings later - Introduced new acdk::io::CharReader/Writer classes, to read/ write character strings from acdk::io::Readers - add class acdk::lang::UnicodeCharacter - Reorganized meta info. The extended meta info for a class can now be stored in external dlls. acdk_core contains only base definitions of the classes and for garbage collections. acdk_core_metainf contains information for the members, of the class. The acdk_core_metainf will be loaded dynamically if needed (using DMI functionality for example). - acdk::lang::dmi::ClazzInfo and other classes reoganized. - acdkmc: Metainfo will also be generated for Enumerations. - Support for gcc 3.1, 3.2 and 3.3 =========================================================== acdk_core 2.01.3 - acdk::lang::System::getEnvironment returns the original environment - Fixed Bugs in acdk::lang::Process. - Initial version of templated version of the collection framework. Unfortunatelly gcc 2.92.* crashes (gcc 3.* works fine). The performance improvements of the templated version and the Object based version is about 20 - 30 %. =========================================================== acdk_core 2.01.2 - Fixed bug in ObjectArrayImpl::equals in case of Nil. - Implemented clone() for the standard value Objects String, StringBuffer, Boolean, Character, Byte, Integer, etc. - Fixed wrong exported template, which results in a linker problem with VC7. - Borland C++ doesn't like method throw declaration like 'void foo() throw RThrowable, RException'. It results in strange error message "Unresolved external __tpdsc__ ...". The THORWSx expands now to empty strings for borland compiler. - Other Borland C++ compatibility fixed. =========================================================== acdk_core 2.01.1 - Introduces class attribute ACDK_WITH_DMIPROXY for interfaces which direct the meta compiler to generate a DMI'able Proxy. This enables to use scripting and distribution languages to implement an ACDK Interface. - In the AbstractObjectRader/Writer the flag SerializeJoinedStrings will manage the Strings written in a dictonary. Equal Strings will only written once into the stream. This has following advantages: If the content written to stream contains many equal strings (like XML or source code) the size of the stream is much smaller. Deserialized into an Object the complete structure in RAM is much smaller, because all equal Strings shares one instance of the String. - fixed bug in acdk::lang::Process implementation for Windows. Detached processes can not catch in, err and out. - new method acdk::io::Reader::readIntoString() - implemented acdk::io::File::createTempFile() - acdk::io::CharArrayWriter::toString() bug fixed. - removed outdated acdk::lang::Logger interface. - Fixed little bug in ClassLoader in case of VisualStudio + release target. =========================================================== acdk_core 2.00.1 - introduced acdk::lang::sys::core_atomicop for synchronisation of refcounting. - introduced acdk::lang::sys::BackTrace as replacement for the trace macros. If ACDK is compiled with debugging info, Backtrace can print call stack (will be used in Throwable. - introduced Marshaler interfaces for extended DMI interface. BYVALIN, BYVALOUT, BYVALINOUT can be used to tag arguments for automatic marshal the Objects in to a stream with the ObjectWriter interface. - introduced a acdk/io/AbstractObjectReader/Writer which should be used base class for compatible Object serialization. The acdk/io/BinaryObjectReader/Writer is ajusted. the acdk/xml/XMLObjectReader/Writer is ajusted. - introduced RefHolderExt.h for passing a RObject itself as reference argument. The IN, OUT, and INOUT-Macros can be used for this. - Introduced SBSTR() in acdk/lang/StringBuffer.h to stream values into a string. Usefull for expection arguments. - Changed all Writer/Reader interfaces to byte*/byteArray. Fixed some related bugs. - acdmc splits large clazzinfo files into chunks of ~ 1/2 MB, to avoid that compiler (especially with optimation settings) run out of space. - acdkmc contains a first draft for a ACDK2IDL which generates from a given ACDK interface corresponding CORBA IDL definitions. - intoduced new tags for metainfo: ACDK_WITH_METAINFO generate all information, including script interface. ACDK_WITH_MI_MEMBER generates all information about members, but none about functions. ACDK_WITH_MI_GCINFO generates only information, which may be needed for garbage collection. The metacompiler acdkmc will generate the corresponding functions. - acdkmc do generate function information only for public functions. - acdkmc recognise enum as valid type. It will be mapped to an int. - New: Class ::acdk::lang::CmdLineParser* for parsing command lines. - Changed Casting from RObject's to Interfaces a little bit. Some automatic casts from an RSomeClass to RSomeInterface does not work longer, and you have to cast explicite with: RSomeInterface si = (RSomeInterface)obj; Please refer also to ChangeLog. =========================================================== acdk_core 1.01.0 - Enhanced Metainfo compiler for CORBA functionality. - Improved Configurations. - Fixed bug in acdk::lang::String =========================================================== acdk_core 1.00.2 Changed configuration managment. =========================================================== acdk_core 1.00 New initial public revision ----------------------------------------------------------- acdk_core 0.95 ----------------------------------------------------------- - many bugfixes and new implementations e.g. acdk::util::Calendar and related Classes. - ClazzInfo structure changed =========================================================== ----------------------------------------------------------- acdk_core 0.0.3 ----------------------------------------------------------- - add support to Sun Solaris 8, gcc 2.95.2 (sunos-gcc). - minor documentation fixes - acdk::lang::ClassLoader, acdk::lang::Package minor fixes - acdk::lang::String fixed bugs, and minor performance improvements - acdk::lang::sys::BoehmGCAllocator. New Plugin interface for Boehm's Conservative Garbage Collector =========================================================== ----------------------------------------------------------- 2000-26-05 acdk_core 0.0.2 initial public release