 CTPP version 2.8.3 change log
 -----------------------------

 Legend
 ------
   + = New feature
   * = Improved feature
   - = Removed feature
   ! = Bug fixed
   = = Unresolved
   # = Other stuff

 Version 2.8.3 (10.11.2012)
 --------------------------
  01. + Returned curly brakets as an alias for square
  02. ! Fixed error reporting

 Version 2.8.2 (13.06.2012)
 --------------------------
  01. - Removed the operator <TMPL_loop> ... </TMPL_loop>
  02. - Removed __FIRST__, __LAST__, __INNER__, __ODD__, __COUNTER__, __EVEN__, __SIZE__, __CONTENT__
  03. - Removed string compat old version in <TMPL_include>
  04. - Removed the attribute 'map' in <TMPL_include>
  05. - Removed functions: NUMERAL, ARRAY_ELEMENT, HASH_ELEMENT
  06. ! Full support of variables in <TMPL_call>
  07. + Support of hashes in <TMPL_foreach>
  08. + New operator <TMPL_break>
  09. + New attributes for iterator of <TMPL_foreach>: __first__, __last__, __index__, __key__, __inner__, __odd__, __even__, __size__
  10. + New functions: CONTEXT, LIST
  11. + Documentation of the CT++ template language (English version)
  12. # Renamed JSESCAPE to JSONESCAPE. Refactored the code
  13. # Performance boost for stream-like DumpJsonString fucntion
  14. # Refactored code

 Version 2.8.0 (28.12.2011)
 --------------------------
  01. * Improved access to arrays and hashes

 Version 2.7.6 (28.12.2011)
 --------------------------
  01. ! Bug fixes
  02. + Tests

 Version 2.7.5 (23.12.2011)
 --------------------------
  01. ! Fixes in CDT::operator=
  02. ! Fixes in block parameters

 Version 2.7.4 (19.12.2011)
 --------------------------
  01. ! Fixes in CDT::operator=
  02. + New constant operator[INT_32] and constant operator[STLW::string]

 Version 2.7.3 (14.11.2011)
 --------------------------
  01. ! Fixes in block arguments
  02. ! New access operator [] for constant objects

 Version 2.7.2 (05.10.2011)
 --------------------------
  01. ! Fixes in URI/URL Escape functions
  02. ! Fixes codegenerator for call/block operators

 Version 2.7.1 (04.07.2011)
 --------------------------
  01. + New operator <TMPL_verbose> ... </TMPL_verbose>
  02. + New modifications of *ALL* operators allows cut leading and trailing spaces
  03. + New implementation of GETTEXT function
  04. ! Bug fixes

 Version 2.7.0 (23.05.2011)
 --------------------------
  01. + Access to arrays ahd hashes contents in variables

 Version 2.6.15 (16.05.2011)
 ---------------------------
  01. ! Fixes in TMPL_foreach translate map

 Version 2.6.14 (28.04.2011)
 ---------------------------
  01. ! Gettext patches

 Version 2.6.13 (05.04.2011)
 ---------------------------
  01. ! Fixes in SPRINTF function (thanks for patch to Varinov Nicolay <nic@sotcom.ru>)
  02. New methods in CDT class: JoinArrayElements, JoinHashKeys, JoinHashKeys, GetHashKeys, GetHashValues, MergeCDT

 Version 2.6.12 (15.03.2011)
 ---------------------------
  01. ! Fixes in Unicode unescape algorithm, thanks to <demonister @ gmail.com>

 Version 2.6.11 (28.02.2011)
 ---------------------------
  01. * Fixes in CTPP2DTOA.cpp, thanks to Vincent <vincent.hervieux@gmail.com>

 Version 2.6.10 (11.02.2011)
 ---------------------------
  01. * Fixes in SPRINTF function (thanks for patch to Varinov Nicolay <nic@sotcom.ru>)

 Version 2.6.9 (09.02.2011)
 --------------------------
  01. * New function: HOSTNAME

 Version 2.6.8 (27.01.2011)
 --------------------------
  01. * New function: GET_TYPE, thanks to Tim Tavlintsev

 Version 2.6.7 (01.11.2010)
 --------------------------
  01. * Dump/RecursiveDump improvements
  02. * NUM_FORMAT improvements, thanks to Lunkov Alexander
  03. ! SPRINTF %f/%e/%g format fixes, thanks to Vlad 'twilight' Maximov

 Version 2.6.6 (05.10.2010)
 --------------------------
  01. ! Linux bug fixes

 Version 2.6.5 (22.09.2010)
 --------------------------
  01. ! Fixes in CTPP2 dialect compiler, thanks to Vlad 'twilight' Maximov

 Version 2.6.4 (20.09.2010)
 --------------------------
  01. * Fixes in SortArray method

 Version 2.6.3 (27.07.2010)
 --------------------------
  01. ! Fixes in TMPL_foreach iterators (thanks to Kirichenko Sergey <kirichenko@post.km.ru>)

 Version 2.6.2 (20.07.2010)
 --------------------------
  01. + CDT Swap method
  02. + CDT SortArray method & helpers

 Version 2.6.1 (15.06.2010)
 --------------------------
  01. ! Various bug fixes
  02. # First stable version if branch 2.6

 Version 2.6.0 (08.06.2010) (Technology Preview)
 -----------------------------------------------
  01. + New CDT implementation
  02. + New contextual variables: __RCOUNTER__ & __OUTER__
  03. + New function: HASH_ELEMENT
  04. # System identificator changed from `Sanahin` to `Dzoraget`
  05. # HUGE API changes

 Version 2.5.19 (24.05.2010)
 ---------------------------
  01. ! Math ops in Foreach cycle

 Version 2.5.18 (09.04.2010)
 ---------------------------
  01. ! Darwin OS fixes only (types)

 Version 2.5.17 (02.04.2010)
 ---------------------------
  01. + New function: SPRINTF
  02. * StreamOutputCollector.hpp fixes
  03. ! Fixes in template compiler(IsFloat mechanism)

 Version 2.5.16 (11.02.2010)
 ---------------------------
  01. # Bump Copyright year
  02. + Documentation for functions NUMERAL, LIST_ELEMENT and ARRAY_ELEMENT
  03. + English version of documentation (thanks to Alexey Kerdivare <alexey.kerdivare@gmail.com>
  04. * Function EscapeJSONString is now ECMA-262 compatible

 Version 2.5.15 (30.12.2009)
 ---------------------------
  01. ! Fixes in function NUM_FORMAT, thanks to http://ilnarb.livejournal.com/

 Version 2.5.14 (02.12.2009)
 ---------------------------
  01. + New method for class CDT: Erase. Erase element from hash by specified key name.

 Version 2.5.13 (24.11.2009)
 ---------------------------
  01. ! Fixes in Base64Encode function

 Version 2.5.12 (18.10.2009)
 ---------------------------
  01. + New data collector: C++ ostream collector (thanks to Chris Trees <christrees@yahoo.com>)
  02. + Port to CygWin (thanks to NetImperia <netimperia@netimperia.com>)
  03. + New overloaded method for class CDT: Exist. Check existence of element.
  04. ! Fixes in CDT class: pointer POINTER_VAL

 Version 2.5.11 (27.08.2009)
 ---------------------------
  01. ! Fixes in virtual machine (CMP instruction)

 Version 2.5.10 (18.08.2009)
 --------------------------_
  01. + New functions: LIST_ELEMENT & ARRAY_ELEMENT
  02. ! Fixes in JSON parser

 Version 2.5.9 (13.08.2009)
 --------------------------
  01. ! Fixes in <TMPL_foreach .. > <TMPL_include "file"> </TMPL_foreach>

 Version 2.5.8 (05.08.2009)
 --------------------------
   01. * Completely rewrite code of JSON parser

 Version 2.5.7 (24.06.2009)
 --------------------------
   01. + New function: NUMERAL
   02. ! Fixes in TRUNCATE & MB_TRUNCATE functions

 Version 2.5.6 (09.06.2009)
 --------------------------
   01. ! Fixes in JSESCAPE function

 Version 2.5.5 (02.06.2009)
 --------------------------
   01. ! Fixes in math. expressions inside functions: <TMPL_var FOO(bar + baz)>

 Version 2.5.4 (20.05.2009)
 --------------------------
   01. ! Fixes for MSVC 2008
   02. ! Fixes in Win32/CryptoAPI
   03. * Avoid a lot of warnings on gcc 4.3+
   04. # #include <...> changed to #include "..." for all files of project

 Version 2.5.3 (12.05.2009)
 --------------------------
   01. * Removed inline methods of exception classes

 Version 2.5.2 (20.04.2009)
 --------------------------
   01. ! Bug fixes in branches inside foreach operator

 Version 2.5.1 (17.04.2009)
 --------------------------
   01. ! Bug fixes in foreach operator
   02. + Documentation for foreach operator

 Version 2.5.0 (16.04.2009)
 --------------------------
   01. + New operator: <TMPL_foreach
   02. * Gettext function accept now 1, 2 or 3 parameters like
         GNU gettext, dgettext dcgettext functions
   03. # All CTPPxxxxx files renamed to CTPP2xxxxx

 Version 2.4.10 (08.04.2009)
 ---------------------------
   01. + New function: WMLESCAPE

 Version 2.4.9 (02.04.2009)
 --------------------------
   01. + New classes: SimpleVM, SimpleCompiler

 Version 2.4.8 (18.03.2009)
 --------------------------
   01. + New functions: CONCAT, SUBSTR, TRUNCATE, MB_SIZE, MB_TRUNCATE, MB_SUBSTR

 Version 2.4.7 (16.03.2009)
 --------------------------
   01. * New flags for iconv converter for class StringIconvOutputCollector
         and function ICONV

 Version 2.4.6 (07.03.2009)
 --------------------------
   01. + New output data collector with charset recoding
   02. + New functions: MIN, MAX, AVG (Arithmetic, Geometric, Harmonic and Quadratic means)

 Version 2.4.5 (04.03.2009)
 --------------------------
   01. + New functions: RANDOM, LOG
   02. + MacOS port files

 Version 2.4.4 (15.02.2009)
 --------------------------
   01. + New functions: HMAC_MD5, URIESCAPE
   02. + New namespace/variable delimiter: `:` (<TMPL_var a:b.c.d>)
   03. ! EscapeJSONString empty string bug
   04. # Port to MacOS X
   05. - Removed CDT::operator+(std::string)

 Version 2.4.3 (08.02.2009)
 --------------------------
   01. + Port to Microsoft (R) Windows (TM)
         (thanks to vsheveliov <vsheveliov@mail.ru>)

 Version 2.4.2 (25.01.2009)
 --------------------------
   01. * Fixed warnings in HashTable class
   02. * Fixed incorrect default message in VMException

 Version 2.4.1 (18.01.2009)
 --------------------------
   01. + New functions: JSON, JSESCAPE
   02. * Documentation for new features
   03. # Code cleanup

 Version 2.4.0 (14.01.2009)
 --------------------------
   01. + New operators: <TMPL_call & <TMPL_block
   02. # API changes

 Version 2.3.11 (07.11.2008)
 ---------------------------
   01. * JSON parser can now parse objects of all types

 Version 2.3.10 (16.09.2008)
 ---------------------------
   01. * Fixed "Use of uninitialised value of size 4" valgrind warning
   02. + Port to ALT Linux (thanks to Denis Klimov <zver@altlinux.org>)

 Version 2.3.9 (12.09.2008)
 --------------------------
   01. * Improvements in parsing Non-HTML templates

 Version 2.3.8 (05.09.2008)
 --------------------------
   01. + Port on SunOS 5.10 i386 and amd64
   02. * CDT datatype improvements

 Version 2.3.7 (02.09.2008)
 --------------------------
   01. + Nested loops from various data sources
   02. ! Fixes in error handling

 Version 2.3.6 (11.08.2008)
 --------------------------
   01. + <TMPL_loop accept now contextual variable __CONTENT__ as argument
   02. + New function: DEFINED
   03. ! Fixes in bytecode loader loader

 Version 2.3.5 (07.08.2008)
 --------------------------
   01. + New input data formats of CAST function:
         "Octal", "Decimal" and "Hexadecimal"
   02. * Function DATE_FORMAT accept now strings as first argument

 Version 2.3.4 (11.07.2008)
 --------------------------
   01. * Debian Lenny bug fixes

 Version 2.3.3 (24.06.2008)
 --------------------------
   01. * Debug subsystem improvements

 Version 2.3.2 (18.06.2008)
 --------------------------
   01. + New methods of CDT class: Find and void PushBack(const CDT & oValue)
         and Iterator Find(const std::string & sKey)

 Version 2.3.1 (03.06.2008)
 --------------------------
   01. * More information about errors in compiler
   02. * Support of empty arrays and objects in JSON

 Version 2.3.0 (21.05.2008)
 --------------------------
   01. + New debug subsystem
   02. ! Bug fix in __CONTENT__ cont. variable handling
   03. + New function: ERROR (only for debugging purposes)

 Version 2.2.3 (14.05.2008)
 --------------------------
   01. * New output format for FLOAT data type: %.*G
   02. + New function: NUM_FORMAT
   03. + C and C++-like comments in JSON file
   04. - Function ARRAY_SIZE renamed to SIZE

 Version 2.2.2 (28.04.2008)
 --------------------------
   01. ! JSON object parser
   02. ! If / Unless multibranch "Stack underflow"

 Version 2.2.1 (23.04.2008)
 --------------------------
   01. + New Function: ARRAY_SIZE

 Version 2.2.0 (18.04.2008)
 --------------------------
   01. + New incapsulated type for CDT class: POINTER
   02. + New methods: CDT::PushBack, CDT::GetPointer and CDT::GetObject<typename T>
   03. + Crossplatform format of executable bytecode file
   04. + Check of CRC32 checksum for bytecode file
   05. + New function: DEFINED. Check that value has not an UNDEF type.
   06. ! Fixed error in multiple logical && and || comparison

 Version 2.1.2 (28.03.2008)
 --------------------------
   01. + Renaming values in <TMPL_include 'filename.tmpl' map (value_in_include = value)>
       Inverse to map (value : value_in_include) order of variables

 Version 2.1.1 (19.03.2008)
 --------------------------
   01. + Renaming values in <TMPL_include 'filename.tmpl' map (value : value_in_include)>

 Version 2.1.0 (14.03.2008)
 --------------------------
   01. + Arithmetic & string operations in operators
   02. + New function: CAST. Cast to specified type.
   03. # Up to 10% performance

 Version 2.0.5 (02.03.2008)
 --------------------------
   01. + Namespaces in variable names (<TMPL_var a.b.c>)
   02. ! Bug fixes

 Version 2.0.4 (18.02.2008)
 --------------------------
   01. + New contextual variable: __CONTENT__
   02. + Small API changes, see file VMDumper.hpp
   03. ! Linux RPATH bug fixes

 Version 2.0.3 (15.02.2008)
 --------------------------
   01. ! Fixed "stack underflow" error in <TMPL_unless UDF( ... )>
   02. + New functions: iconv and obj_dump
   03. + Russian documentation (in HTML)
   04. + New data collector class: StringOutputCollector

 Version 2.0.2 (08.02.2008)
 --------------------------
   01. ! Bug fixes
   02. + New functions: base64_encode, base64_decode and md5

 Version 2.0.1 (04.02.2008)
 --------------------------
   01. ! Fixed "stack underflow" error in <TMPL_if UDF( ... )>
   02. + New method CDT::RecursiveDump
   03. + FreeBSD port, Debian package, RPM spec file

 Version 2.0.0 (15.01.2008)
 --------------------------
   01. # Initial revision
