ChangeLog

Version
Changes introduced
Possible backward incompatibilites
JIRA Release notes
1.4.0
First release with NextGen transforms !
Note that some transforms are still XSLT based, XSLT will be progressively phased out.
  • due to imperfections of quasar, previously quasar's Base Classes (on which you build your Device Logic classes) would include too many header files for you. That means that maybe you never had correct includes in your Device Logic classes. This release is much more correct regarding that aspect so you might need to finally fix that. It's just a matter of adding few missing #includes.
  • in case there is something wrong with the new code generation, you can force quasar to run solely the old transforms, just edit a switch in FrameworkInternals/transformDesign.py called LEGACY_CODE_GENERATION to True.
Task
  • [OPCUA-1820] - UaVariant + valueAndStatus not covered by tests
  • [OPCUA-1846] - initialStatus not correctly propagated

Improvement
  • [OPCUA-1746] - quasar NextGen design transformation via Jinja2
  • [OPCUA-1784] - add tests for valueAndStatus, but without initialValue, to test_cachevariables


1.3.14
15-Apr-2020
A service release with many minor improvements
Consider moving your custom sources listed in Device/CMakeLists.txt to a newly added file Device/DeviceCustom.cmake
Device/CMakeLists.txt will become a file owned by the quasar framework in one of future releases!
Bug
  • [OPCUA-1788] - Non-compiling arrays of UaByteString and UaVariant
  • [OPCUA-1801] - Amalgamation encoding missing, relevant for Python3.6+
Task
  • [OPCUA-1777] - Signature mismatch for OpcUa_XInt16 setters (X from {null, "U"})
  • [OPCUA-1787] - Prepare a comprehensive test-design for methods (configurable variant: synchronous vs asynchronous)
  • [OPCUA-1800] - Add UA-SDK based tests to quasar Travis
  • [OPCUA-1802] - Test source-variables
  • [OPCUA-1806] - Add setters/getters invocation to test_cache_variables test
Improvement
  • [OPCUA-1764] - Split Device's CMakeLists into user and non-user part
  • [OPCUA-1785] - Lot of stale code to remove in ASNodeManager.cpp
1.3.13
27-Mar-2020
The primary advantage are the improvements done to help build different quasar-based servers in restricted areas (like P1), thanks to URL translation for optional modules etc...
Now, by default, find_package(Boost) is used to resolve Boost libraries.

If you want the older behaviour, which implied manually specifying boost paths and libs, you can still do it by defining, in the build config of choice, the following CMake variable:

IGNORE_DEFAULT_BOOST_SETUP
Bug
  • [OPCUA-1781] - cache-variables of arrays of booleans, initialized from configuration, don't build
  • [OPCUA-1782] - cache-variables of arrays of uint64, initialized from configuration, don't build
  • [OPCUA-1783] - multiple root/hasobjects elements referring to same class causes non-compiling code
Task
  • [OPCUA-1776] - Extend quasar travis for some beyond-trivial tests (e.g. inject few different Designs than span some common scenarios)
  • [OPCUA-1790] - Optimize OptionalModules (separate CMake file)
  • [OPCUA-1791] - OptionalModules URL processing for server URL replacement(s)
  • [OPCUA-1792] - Use find_package(Boost) for general Boost resolution in quasar
Improvement
  • [OPCUA-1741] - boost::lexical_cast -> std::to_string in quasar (subject to gcc 4.8.5 avail)
1.3.12
26-Feb-2020
Service release with different fixes for generic formulas and different other improvements.
(none known)
Bug
  • [OPCUA-1686] - quasar tolerates empty name of CalculatedVariable
  • [OPCUA-1687] - $applyGenericFormula incorrect behaviour for formula replacement, should be partial, is complete
  • [OPCUA-1703] - use python3 in appveyor build
Task
  • [OPCUA-1286] - open62541-based server doesn't quit when the initialization failed (e.g. network port was in use)
  • [OPCUA-1683] - Quasar compilation warning from Configurator
  • [OPCUA-1697] - Fix default_configuration
  • [OPCUA-1705] - Remove allow_long_disguise for program options
  • [OPCUA-1726] - $applyGenericFormula captures wrongly
  • [OPCUA-1727] - trivial: wrong command name referenced in exception - build_config
  • [OPCUA-1732] - Add defaults for ThreadPool config in the Configuration xsd generator
1.3.11
06-Jan-2020
Stabilization fixes, especially with MetaBuildInfo
(none known)
Bug
  • [OPCUA-1657] - fix windows and linux CI builds for master
Task
  • [OPCUA-1653] - Fix meta_build_info.py for the case of NO external build libs
  • [OPCUA-1681] - Check GCC 8.3 warning for string operation truncation
Improvement
  • [OPCUA-1679] - boost -> std migration (where possible)
1.3.10
04-Dec-2019
Isolates code in Server/ module from internals of open62541, it'd permit more independent development of open62541-compat.
If you use open62541-compat, you need version 1.1.5 or later.
Task
  • [OPCUA-1642] - Make quasar independent from UA_Server structure (thus, from open62541 version)
Improvement
  • [OPCUA-1413] - quasar to work with Unified Automation 1.7.*
  • [OPCUA-1623] - Quasar fails to compile in C++17 mode
1.3.9
29-Nov-2019
Improvements to ensure Python3 compatibility
(none known)
Bug
  • [OPCUA-1585] - quasar python tooling not compatible with Python3
  • [OPCUA-1610] - Fix appveyor build - use python 3 (instead of 2)
Task
  • [OPCUA-1600] - Converge whole quasar Python code to standardised 4-spaces separator
  • [OPCUA-1604] - RPM quasar module to go optional
  • [OPCUA-1614] - Converge quasar Python-based s cripting to LF line endings
  • [OPCUA-1630] - Improve md5 computation (a.k.a. subprocess module has no 'getstatusoutput' (In Python 2.7))
1.3.8
11-Nov-2019
"Quick fix" for OPCUA-1573
(none known)
Bug
  • [OPCUA-1568] - No location printed for CalcVars error "Variable sqrt can't be found. Formula error most likely?"
  • [OPCUA-1573] - Initializers for array values were forgotten to be allowed in the new Configurator (from quasar 1.3.6)

Task
  • [OPCUA-1569] - Document no-whitespace between operation and parenthesis-operand
1.3.7
01-Nov-2019
Different optimizations to optimize server build times
(none known)
Task
  • [OPCUA-739] - Meta amalgamation
  • [OPCUA-1546] - Support for Ninja builds
  • [OPCUA-1558] - Singleton getter in DRoot
  • [OPCUA-1563] - Does quasar really require cmake3+ ?
  • [OPCUA-1564] - Disable certificate validity check until OPCUA-1541 is contributed

Improvement
  • [OPCUA-1249] - Experiment with amalgamation to boost compile times of quasar servers
  • [OPCUA-1269] - Try removing Configuration.hxx include in Base header classes
  • [OPCUA-1528] - misleading build error message
1.3.6
27-Sep-2019
Changed the order of objects instantiation to follow the XML config file.
(none known)
Bug
  • [OPCUA-1506] - Uncovered case of singular hasObjects
  • [OPCUA-1523] - SourceVariables read handler, wrong generation

Task
  • [OPCUA-1495] - Get rid of unused variable warning
  • [OPCUA-1497] - Support varied-level parents by "thisObject" operator
  • [OPCUA-1500] - Fix order of instantion to follow the order of XML

Improvement
  • [OPCUA-1514] - New configurator : tag name comparison should be case-insensitive
1.3.5
13-Sep-2019
Small improvements and fixes, please refer to the right-most column for details.
If you use m_addressSpaceLink anywhere in your DeviceLogic code, please use getAddressSpaceLink() instead (due to OPCUA-1489).
Bug
  • [OPCUA-1429] - upgrade_design fails
  • [OPCUA-1434] - MetaBuildInfo might fail with escaping text and make project impossible to build

Task
  • [OPCUA-1416] - Different Graphviz layouts for quasar design diagrams
  • [OPCUA-1426] - Make a pointer from ProjectSettings and build_configuration to the documentation of quasar build system
  • [OPCUA-1428] - Fix documentation for "./quasar.py upgrade_design"
  • [OPCUA-1452] - Modernize OpcServer class implementation
  • [OPCUA-1472] - Optimize CalculatedVariables when referring "this" from the formula
  • [OPCUA-1480] - quasar w/open62541 doesn't build
  • [OPCUA-1481] - Resolve warnings and deprecated functions in quasar servers
  • [OPCUA-1487] - Suppress StandardMetaData / connectedClientCount
  • [OPCUA-1489] - Force usage of getAddressSpaceLink by finally making m_addressSpaceLink non-public
  • [OPCUA-1499] - Fix docs for Yocto builds

Improvement
  • [OPCUA-1425] - Update quasar LogIt submodule reference to collect 'append' configuration for boost log
  • [OPCUA-1504] - MetaBuildInfo: improve the contents of meta information 'commitID'
1.3.4
16-Apr-2019
Support for config-entry defaults and various smaller improvements.
If you UA SDK, please update your build config files. You should add the following includes:

include_directories (
${OPCUA_TOOLKIT_PATH}/include/uastack
${OPCUA_TOOLKIT_PATH}/include/uabase
${OPCUA_TOOLKIT_PATH}/include/uaserver
${OPCUA_TOOLKIT_PATH}/include/xmlparser
${OPCUA_TOOLKIT_PATH}/include/uapki
)

This is due to clean-up effort originating from OPCUA-1278.
Bug
  • [OPCUA-1336] - symlink_runtime_deps is broken on windows
  • [OPCUA-1353] - Return value of UA_Server_run not taken into account
  • [OPCUA-1370] - SourceVariables asynchronous with type UaString is misbehaving
  • [OPCUA-1371] - Valid but non-compiling Design for source-variables on class without Device Logic
  • [OPCUA-1376] - Incorrect population of ArrayDimensions, forbids arrays to be used with open62541 0.3
  • [OPCUA-1380] - array cache-vars wrongly propagate to config with no configInitializer

Task
  • [OPCUA-879] - Document Quasar build system
  • [OPCUA-1302] - Remove (already deprecated) support for open62541 0.2 in o6-compat
  • [OPCUA-1314] - Creation of runtime symlinks dependencies by default
  • [OPCUA-1335] - quasar RPM builder: various improvements

Improvement
  • [OPCUA-1278] - Move backend specific header inclusions to relevant build configs
  • [OPCUA-1321] - Lower severity for Log message when NULL value can't be taken for CalculatedVariable evaluation
  • [OPCUA-1375] - Improve Optional Modules message
  • [OPCUA-1381] - Support for config-entry defaults
  • [OPCUA-1397] - Add windows debugger console sink to LogIt
1.3.3
16-Jan-2019
Features needed for embeddability into Python or other languages
(none known)
Task
  • [OPCUA-1284] - Let external classes access node managers (relevant e.g. for embedding quasar into Python)

Improvement
  • [OPCUA-1274] - Support for quasar for building servers as shared objects
  • [OPCUA-1275] - Unify quasar "shutdown" ecosystem among different backends
1.3.2
13-Dec-2018
Introducing CalculatedVariables
Inspect your Server/src/QuasarServer.cpp
The method QuasarServer::initializeLogIt() should do:

BaseQuasarServer::initializeLogIt();

rather than directly call LogIt initialize functions. Otherwise you will not get any logging from quasar-defined logging components, like CalcVars.
Task
  • [OPCUA-696] - Calculated variables
  • [OPCUA-1265] - Support for CalculatedVariables in config doc generation
1.3.1
05-Dec-2018
The release features BuildMetaInfo.
(none known)
Task
  • [OPCUA-1148] - BuildMetaInfo, quasar-standard support for build-related information via address-space and command-line
  • [OPCUA-1216] - transformDesign() support for multiple additional parameters
  • [OPCUA-1234] - Unfreed memory in open62541 server config object
1.3.0
15-Nov-2018
The build system is the primary actor of this release:
  • CMake3 is now required,
  • out-of-source builds are now default
If you use UASDK (or any other backend that comes built before quasar server gets build) rather than open62541-compat, you should add a virtual target in your build config file:

add_custom_target( quasar_opcua_backend_is_ready )

Bug
  • [OPCUA-1213] - ASInformationModel generation not dependent (in CMake sense) on the xslt

Task
  • [OPCUA-1016] - Yocto+quasar
  • [OPCUA-1165] - Yocto branch upmerge
  • [OPCUA-1183] - cmake3 in quasar projects
  • [OPCUA-1186] - Compatibility for open62541 0.3 for opcserver_open62541.cpp
  • [OPCUA-1193] - Fix documentation on quasar build for Ubuntu 18 (FetchContent issues)
  • [OPCUA-1211] - Convenience quasar function to prepare environment in build/bin

Improvement
1.2.7
25-Oct-2019
This release is mostly oriented on the deployment of new version of LogIt and the change in which LogIt source code is maintained. A number of improvements have been implemented as well.
After checking out the tag 1.2.7 in the quasar repo, due to the fact of moving LogIt to a separate github repo, you should execute:


git submodule update --init --recursive

For all users who used to profit from UATRACE logging sink: you are requested to add to your build config the following line:

option(LOGIT_BACKEND_UATRACE "Whether to build with UATRACE (logging via UASDK logger)" ON) 


Read more about LogIt changes
Bug
  • [OPCUA-1123] - check_consistency should not complain about generated address space classes
  • [OPCUA-1150] - UaVariant related AddressSpace generation - generates non-compiling code

New Feature
  • [OPCUA-1131] - Range (min/max) restrictions in config restrictions
  • [OPCUA-1132] - Add documentation option to source variables
  • [OPCUA-1139] - Address space documentation creation in analogy to config doc

Task
  • [OPCUA-1128] - generate device --all doesn't work in SCA OPC-UA
  • [OPCUA-1144] - Remove stale boost/foreach includes in Meta
  • [OPCUA-1147] - Compilation error for sourcevariable but without device logic
  • [OPCUA-1151] - Add d:documentation to methods' arguments and returnvalues
  • [OPCUA-1153] - LogIt CMakeFiles.txt needs separate paths for standalone vs non-standalone

Improvement
  • [OPCUA-853] - Range-based for adoption
  • [OPCUA-1140] - Rationalise LogIt source code maintenance - quasar to obtain LogIt source code from the dedicated stand-alone LogIt repository.
  • [OPCUA-1141] - Replace call to system::abort in meta with something more user friendly - throw an exception containing an error message
1.2.6
21-Aug-2018
Major features:
  • Out-of-source builds
  • XSD restrictions support

Minor features

  • Generating Config Schema documentation
(none known) New Feature

Task
  • [OPCUA-1006] - Try to include quasar project as a CMake subproject
  • [OPCUA-1007] - Out-of-source build capability
  • [OPCUA-1012] - Rework argument passing into internal quasar functions
  • [OPCUA-1113] - Abandon out-of-source build if there is CMakeCache present in-source
Improvement
  • [OPCUA-1126] - Improve the config doc generator for types of values (including restrictions)
1.2.5
06-Aug-2018
This is mostly a service release bringing significant simplifications in internal quasar scripting for features to come in future.
The CMake target to generate Configuration.hxx has been renamed to Configuration.hxx_GENERATED .
If you used this target e.g. for add_dependencies() statement then you should follow the change accordingly.

Please also note that @makeSetGet attribute of cachevariables finally disappears at it has been deprecated since 2014.
Bug
  • [OPCUA-1036] - isKey doesn't work without device logic and with arrays
  • [OPCUA-1061] - Target Configuration.hxx confuses the ninja build system, rename it
  • [OPCUA-1103] - Return code of a quasar server is zero despite an exception caught in BaseQuasarServer

Task
  • [OPCUA-1097] - Expose device logic mutex via getLock()

Improvement
  • [OPCUA-1106] - Simplify Python scripting for running Quasar code generation
  • [OPCUA-1107] - remove @makeSetGet
  • [OPCUA-1111] - Embedded commands help into quasarCommands.html
1.2.4
04-Jun-2018
Major features:
  • Asynchronous methods
  • Quasar's thread pool
Methods have a new compulsory attribute called "executionSynchronicity". Please pick "synchronous" for the old behaviour. Picking asynchronous will execute a method in a separate context, as per OPCUA-1034.

On some systems (e.g. Ubuntu) the following addition in your custom build config might be necessary:

SET( QUASAR_SERVER_LIBS "-lssl -lcrypto -lpthread" )

otherwise you might get a message about unmet link dependency to libpthread.
New Feature
  • [OPCUA-1033] - Methods having array arguments and return values in quasar servers
  • [OPCUA-1034] - Asynchronous methods

Task
  • [OPCUA-1009] - Source variables not scaling well in certain types of use cases
  • [OPCUA-1051] - Remove quasarGUI.py
  • [OPCUA-1056] - Improve memory management in Certificate.cpp

Improvement
  • [OPCUA-1031] - Improve designToConfigurationXSD.xslt post arrays merge
  • [OPCUA-1044] - Move variant-vector converters from designToClassBody.xslt to CommonFunctions
1.2.3
04-May-2018
Major features:
  • Arrays in quasar servers

Minor features:

  • Bug fixes
(none known) Bug
  • [OPCUA-990] - cache-variable of "UaByteString" and "UaVariant" types don't compile
  • [OPCUA-1018] - name attribute of any quasar object in config file permitted to be empty string
  • [OPCUA-1030] - Array delegator for UaString implies known data type so xsl:choose should not be used
  • [OPCUA-1032] - quasar should remove a partially generated file in case generation fails

Task
  • [OPCUA-915] - Diagram generation support for arrays
  • [OPCUA-1023] - integration branch for quasar arrays integration

Improvement
  • [OPCUA-1024] - Optimize ArrayTools
  • [OPCUA-1025] - OneToMaxLimits -> ArraySizeLimits
  • [OPCUA-1027] - Improve designToClassBody.xslt post arrays merge
  • [OPCUA-1028] - Move array bounds validation from Design.xml from designToClassBody.xslt to Design.xsd or to 2nd stage validator
  • [OPCUA-1046] - Cannot document methods in Design.xml
1.2.2
27-Mar-2018
Please have a look at release note for summary.
(none known)
Bug
  • [OPCUA-923] - ProjectSettings should be included after Build config
  • [OPCUA-1001] - Sourcevariable datatype declared as float is listed as Variant (type 24) in the address-space

Task
  • [OPCUA-994] - Relax case restrictions for variable names in quasar
Improvement
  • [OPCUA-854] - Optional module version check fails with 'release candidate' tags
1.2.1
09-Nov-2017
Bug fixes:
  • the mode to create PKI certificates and exit didn't work with UA SDK 1.5.x  - fixed
  • honkyTonk didn't work
(none known)
Bug

Improvement
  • [OPCUA-858] - --create-certificate misleading, no warning when certificate already exists, plus possibly it doesnt work with tkit 155
  • [OPCUA-874] - Improve honkyTonk, generate only when devicelogic present, warn when not
1.2.0
03-Aug-2017
Major features:
  • Methods support (UASDK + open62541)

Minor features:

  • astyle compatibility mode
  • sticky build config
  • commonalization of master CMakeLists.txt
  1. Note that since this release, the master CMakeLists is "one-size-fits-all", i.e. you should customize it. Instead, your per-project settings like the name of the executable and so on should go to ProjectSettings.cmake, which will be included after the upgrade.

  2. Please note that you no longer append your build config file name to "./quasar.py build".  Now you should do:
    ./quasar.py set_build_config <path_to_your_build_config>

Bug
  • [OPCUA-662] - prepare.py (from open62541-compat) does not work
  • [OPCUA-745] - Asynchronous source variable with UaString doesn't compile
  • [OPCUA-800] - Cosmetic fixes for methods

New Feature

Task
  • [OPCUA-106] - Quasar methods
  • [OPCUA-579] - Easily selectable OPC-UA backend configuration file (ServerConfig.xml)
  • [OPCUA-668] - Post-merge: missing copyright header in designToHonkyTonk
  • [OPCUA-786] - astyle equivalent with no/minimal deployment cost
  • [OPCUA-830] - Commonalize master CMakeLists.txt, find what specific extensions people have

Improvement
  • [OPCUA-689] - Optional modules should work from branches too
  • [OPCUA-799] - Sticky build config
  • [OPCUA-819] - Model visualization improvements
1.1.8
18-Jul-2016
Major features:
  • Optional modules
Minor features:
  • Python-based scripting clean-up and enhancement (external_tool_check, etc)
In the Design.xsd schema, vendor attribute is now renamed to author. If you used that attribute, please update your Design.xml accordingly.
Bug
  • [OPCUA-640] - Compilation error with UA API 1.5.x
Task
  • [OPCUA-634] - Add option to enable_module which would persistify the selection in the VCS used
  • [OPCUA-635] - Optional modules
  • [OPCUA-646] - Improve quasar generated headers for device, rename vendor to author
Improvement
  • [OPCUA-583] - Python scripting system better error handling and messages, refactoring, and other improvements
1.1.7
17-Jun-2016
Major features:
  • Compatibility with the API of OPC-UA Toolkit 1.3.x, 1.4.x and 1.5.x.
NONE KNOWN
Bug
  • [OPCUA-611] - Debug builds (sometimes) abort on startup during meta configuration
  • [OPCUA-616] - Bug found in shutdown.cpp, affecting certain versions of Windows
  • [OPCUA-618] - ConfigValidator missing inclusion of Utils.h
New Feature
  • [OPCUA-617] - check_consistency working with projects stored on git
Task Improvement
1.1.6
29-Apr-2016
Major and minor features, look into the rightmost column for details.
NONE KNOWN
New Feature
  • [OPCUA-608] - Ability to use server LogIt instance for logging from within dynamically loaded libraries on linux and windows
Task
  • [OPCUA-560] - Configuration discovery/serialization
  • [OPCUA-575] - Application-specific command line options
  • [OPCUA-594] - RPM building in Quasar: Create an analogue of build_from_svn for git projects
  • [OPCUA-600] - Clarify situation of Saxon jar inclusion; if impossible find alternative deployment
1.1.5
29-Jan-2016
Minor fixes:
  • Missing copyright headers, and a small fix that wouldn't compile in proper C++11 compiler
NONE KNOWN
Bug
  • [OPCUA-577] - gcc4.8.2 confused by const of NodeManager
Task
  • [OPCUA-574] - Missing copyright header in ASNodeQueries.h
1.1.4
27-Jan-2016
Major features:
  • Supplied MSVC (Windows) configuration now defaults to MSVC2013
Minor features:
  • Fix for cache variables with isKey=true and UaString dataType
sys/time.h and uadatetime.h are no longer included Utils.h.
Bug
  • [OPCUA-565] - Using configentry with dataType "UaString" as key (attribute isKey="true") generates non-compiling Base_D* code
Improvement
  • [OPCUA-566] - QUASAR for windows: Migration from VC++ 2010 to VC++ 2013
1.1.3
27-Jan-2016
Major features:
  • Single-item-classes (where the only variable takes place of the object in the Address Space)
None known
Improvement
  • [OPCUA-540] - Unified device parent in DeviceLogic no matter if the factual parent exists or not
New Feature
  • [OPCUA-489] - Make QUASAR framework version info available to OPC-UA clients from StandardMetaData
Task
  • [OPCUA-555] - Single-item-class support (a.k.a. 'primitive')
  • [OPCUA-557] - Move heavy (templated) code for node search from ASNodeManager.h into separate header
  • [OPCUA-561] - Better level of detail for visualtion (generate diagram) to see presence of device lgoic
1.1.2
27-Jan-2016
Major features:
  • Re-design of main.cpp: it should since this revision be unchanged by the developer. Custom parts should go into QuasarServer.cpp
It is required to migrate to your main.cpp into new QuasarServer.cpp

Your initialization code should go to QuasarServer::initialize(),
your shutdown code should go to QuasarServer::shutdown(),
and the main loop into QuasarServer::mainLoop().


Improvement
  • [OPCUA-447] - Improve main.cpp to clearly structure it
  • [OPCUA-527] - New standard meta data
New Feature
  • [OPCUA-489] - Make QUASAR framework version info available to OPC-UA clients from StandardMetaData
Task
  • [OPCUA-519] - Fix copyright info - LogIt, Meta
  • [OPCUA-522] - Add License.txt with GPL license into Quasar sources
  • [OPCUA-532] - Add header for files.txt and original_files.txt
1.1.1
19-Nov-2015
Minor features:
  • Python commands got renamed to what was chosen by Quasar developers as most optimial
framework.py -> quasar.py
Bug
  • [OPCUA-529] - upgrade_design parameters not forwarded (effectively not working)
Improvement
1.1.0
Major features:
  • Big clean-up which brings awaited feature of converting "deviceLogicTypeName" into something human (but breaks Design.xml compatibility at the same time)
  • Decoupling Base device classes from the address space completely
  • Proper headers now introduced in almost anything apart from Meta, LogIt and Python scripts
Minor features:
  • Clean-up of source variables logging -> now using LogIt
  • Added in-line (i.e. Eclipse compatible) documentation to source variables attributes
Design.xml compatibility likely to be broken in your case (if you use Device Logic), but this can be easily fixed, just run:

./quasar.py upgrade_design convert_to_hasDeviceLogic=yes

Also bear in mind that if upgrading from a version earlier than 1.0.2, namespaces have to get fixed (look at notes in 1.0.2)
Sub-task
  • [OPCUA-512] - Dissociate base from Address Space completely
Bug
  • [OPCUA-513] - Shipped config.xml and Design.xml still have old XML namespace
Improvement
  • [OPCUA-514] - deviceLogicTypeName -> hasDeviceLogic
Task
  • [OPCUA-515] - Fix copyright info - Piotr's code
  • [OPCUA-516] - In-line documentation to attributes of source variables
  • [OPCUA-517] - upgrade_design doesn't take arguments
  • [OPCUA-518] - Fix the namespace for CommonFunctions
  • [OPCUA-520] - Source variables should be logged using LogIt
1.0.2
Minor features:
  • A feature to store configentry data permanently in the Device object.
Is is required to replace in your Design.xml the occurencies of:

"http://www.example.org/Design"

to

"http://cern.ch/quasar/Design"

You can automate it using sed:
sed -e 's/www.example.org/cern.ch\/quasar/g' Design.xml -i

same for configuration files.
Bug
  • [OPCUA-504] - Problem with pythonized scripts
  • [OPCUA-505] - check_consistency fails
  • [OPCUA-506] - Synchronous source variable not properly generated in Device
Improvement
  • [OPCUA-495] - Design.XSD Protection for unique names of variables within a class
New Feature
  • [OPCUA-482] - (optional) storage of <configentry> values, in generated Device classes, provides 'raw' configuration values at runtime.
Task
1.0.1
Minor features:
  • Supported data types collection has grown to: Int16, UInt16, Int8(=SByte), UInt8(=Byte)

Improvement
  • [OPCUA-488] - Keep msbuild specific instructions in msbuild build configuration
  • [OPCUA-501] - frameworkGUI improved logging
New Feature
1.0.0
Major features:
  • sh build scripts converted to Python, so the development and build may be started on any operating system (previously Linux only)
  • MSVC10 compatibility is now guaranteed for delivered and generated code
Note that versioning schema has changed since this release into more common 3-section version id. Otherwise it would be more logical to continue with 0.100 after 0.99 ;-)
With new multiplatform scripts, the entry points of the framework have changed. I.e. there is no longer automated_build_linux.sh script.

Improvement
  • [OPCUA-487] - Improve #ifdefs in main.cpp to include at least one section or fail if impossible to do so
Task
  • [OPCUA-363] - transformDesign in python
  • [OPCUA-364] - Documentation how to install astyle, kdiff3, (possibly Java), python, on Windows (update in Documentation.html)
  • [OPCUA-483] - Windows-enabled Generic Server
0.99
Major features:
  • Cleaned up build system, which allows for customization of paramteres like boost version and path, OPC UA toolkit, custom compiler etc
Minor features:
  • In-line documentation in the Design and in the (generated)Configuration schema
  • Esthetical improvements with LogIt and Meta
  • Many small useful fixes
  • The structure of CMakeLists.txt have changed:
    • Server/CMakeLists.txt got standardised, it is no longer supposed to be maintained by the user
    • It is the master CMakeLists.txt which now have the statement to create the exec and link appropriate libraries
    • Therefore it may be necessary to put some effort into resolving CMakeLists.txt business
    • One may need to prepare custom build configuration file to capture their specific build instructions (i.e. custom boost)
Bug
  • [OPCUA-387] - Bug found in official framework release, file designToGeneratedCmakeDevice.xslt
  • [OPCUA-428] - Error messages from Meta assume the config file is called config.xml
  • [OPCUA-450] - No parent device is generated in Base class under certain conditions
Improvement
  • [OPCUA-220] - in-line documentation as to what is meant by [forbidden|delegated|regular] for addressSpaceWrite
  • [OPCUA-429] - Catch global exceptions
  • [OPCUA-434] - Print component name instead of numerical id when changing log level from the address space
  • [OPCUA-441] - Include empty Design.xml and config.xml in the framework installation package
  • [OPCUA-446] - DRoot camelCase for objects
  • [OPCUA-448] - Inline documentation for all attributes of cachevariable
  • [OPCUA-449] - Print class and variable for error "For valueAndStatus initializer initialStatus must be given."
  • [OPCUA-458] - Try carrying documentation over from Design file to Configuration schema
Task
  • [OPCUA-166] - Allow no device logic for children when parent has one
  • [OPCUA-357] - Check with evaluation version of OPC UA toolkit; mention in tutorial+docs; prepare build target
  • [OPCUA-375] - Master CMakeLists: toolkit location should be specified with one CMake variable (defined at the top)
  • [OPCUA-377] - LogIt, use 4 digit year in timestamp
  • [OPCUA-385] - Proposal of enhancement of the build system to nicely capture OS differences and possibly non-standard components (e.g. boost)
  • [OPCUA-396] - Better end-user error message if trying to start new server instance when server is already running
  • [OPCUA-430] - Prepare default config when build configuration wasnt specified
  • [OPCUA-439] - Investigate write/read through the same variable feature
  • [OPCUA-440] - Fix "Discovery Server not available" currently logged in all OPC UA srv logs
0.98
Major features:
  • LogIt
  • Meta
Minor features:
  • Thread pool size is not hardcoded (and can be configured from the config file)
  • Data Type identifier field is  now populated for variables which have initialValue. Therefore it matches the type declared in the design file. This was completely unrelevant for UA Toolkit-based clients but affected i.e. LabView OPC UA client.
  • ConfigValidator has more verbose output
  • When loading of configuration fails, xsd's native mechanism is now used instead of running the external validator (here: xmllint). This will both improve portability (xmllint might be unavailable in the target system), and help with configuration schemas that may have very nonstandard locations.
  • A bug is fixed which would affect delegated cachevariables of UaVariant type.
NONE KNOWN
Task
  • [OPCUA-156] - Extend config file with configuration options (e.g. thread pool size)
  • [OPCUA-157] - Improve InformationModel for Variables
  • [OPCUA-371] - LogIt: dont put full path to file which generates message in the log
  • [OPCUA-372] - Common way of initializing log levels at startup
  • [OPCUA-379] - Merge respective changes from latest Wiener server
  • [OPCUA-401] - Suboptimal error message when schema specified in config.xml cannot be found
  • [OPCUA-402] - DataType identifiers are necessary for certain OPC UA clients
  • [OPCUA-403] - UaVariant forbidden in delegated write
  • [OPCUA-425] - Improvement in loading component log levels from the config file
0.97
Major features:
  • Device classes are split into Base part (100% generated) and User part (with generated stubs). This helps to reduce merging efforts by an order of magnitude.
Minor features:
  • No more compilation warnings coming from ASNodeManager
  • SourceVariables only rebuilt for classes which actually have a source variable (and not all classes)
  • Configurator, Root fully autogenerated
  • Queriying object name is now easy in Device logic
  • A list of device logic files is now filled automatically
  • Possible to have "self-referring" hasObjects relation
  • When given device logic body/header doesnt exist, user is asked whether to generate
  • When given device logic body/header is older than design file, user will be warned
  • regenerating Device Logic may ask for removal of big parts of already existing Device Logic code. This is actually intentional as this code will now go to the Base part of Device Logic class
Bug
  • [OPCUA-259] - Fix build warnings
  • [OPCUA-361] - ConfigValidator attempts to validate per-design instantiated objects (should skip them)
  • [OPCUA-362] - check_consistency: add option to ask for fixing.
Task
  • [OPCUA-248] - Make SourceVariables.{h,c++} dependencies less tight
  • [OPCUA-250] - Should getName() be present for all Device Logic objects automatically?
  • [OPCUA-257] - Evaluate Ben's anti-merge improvement
  • [OPCUA-281] - Make Configurator.cpp and DRoot generation fully automatic
  • [OPCUA-349] - Cleanup generated_files_list and generated_headers_list
  • [OPCUA-350] - A warning when Device file is newer than Device Logic classes
  • [OPCUA-355] - Improve install tool
  • [OPCUA-360] - Exchange compile-time recursion for exec-time recursion of self "has" relation
  • [OPCUA-370] - check_consistencty: when file doesnt exist, md5sum bails out
0.96

  • nullPolicy attribute needs to be added per-cachevariable. This can be automated by upgrade_design script (look at its help)
Bug
  • [OPCUA-260] - addressSpaceWrite confused with addressSpaceRead
Improvement
  • [OPCUA-258] - Better deprecation warning msg
  • [OPCUA-263] - Flood of destructor messages.
  • [OPCUA-279] - Focus 2nd level validation in 1 XSLT transform
Task
  • [OPCUA-209] - null setters for non-uavariant variables
  • [OPCUA-266] - Failing XSLT processor should make the output to be deleted
  • [OPCUA-267] - Create simple XSLT for updates of the version of the framework in existing projects
0.95
Major features:
  • Doxygen integration
  • Cardinality modelling (possibility to specify min and max number of objects in ts relation)
Minor features:
  • Cachevariable's setter's source time argument (3rd argument) has now a default of current datetime. Therefore it can be omitted for 99% cases.

NONE KNOWN
Task
  • [OPCUA-203] - Integrate doxygen
  • [OPCUA-215] - Cardinality modelling in hasObjects relation
  • [OPCUA-231] - setters: current datetime (UaDateTime::now()) should be default argument for time
0.94
Major features:
  • Config Entries
NONE KNOWN

Beware though that recommended layout of Device headers and sources changed, and you may need to reshuffle it a bit for getting easy merging.
Bug
  • [OPCUA-217] - simple addressspace setters not updated in addressspace body generator
Task
  • [OPCUA-168] - Device header and body shall have a comment that indicates the start of custom section
  • [OPCUA-197] - Config Entries
  • [OPCUA-204] - Document all transformations (including building the project) in a nice diagram and put it into documentation
  • [OPCUA-206] - openssl-dev and libxml2-devel dependency missing in Generic Server documentation
  • [OPCUA-212] - dont generate Device Logic stubs when DeviceLogicTypeName not defined
0.93
Major features:
  • Files database (files.txt) and number of tools that depend on it: consistency checker, new installer
Minor features:
  • Setters for simple data types take plain value instead of reference
  • makeSetGet dropped as a cachevariable attribute (equivalence of true assumed)
Internal features:
  • create_release.sh script
NONE KNOWN
(only deprecation warning shown for makeSetGet attribute)
Task
  • [OPCUA-120] - Consider makeSetGet=true as normal, non-configurable parameter
  • [OPCUA-127] - A way to check that files that shall not be modified (transforms...?) are not modified
  • [OPCUA-160] - Install script should be more gentle ...
  • [OPCUA-167] - Setters: simple data types (integers, floats...) shall be passed by value rather than by reference
  • [OPCUA-188] - A script to verify if proper things are committed to the SVN (and warn if too much/not enough is within version control)
  • [OPCUA-198] - Create script for tagging Generic Server releases
0.92
Major features:
  • Source variables
  • Automated mutex generation
  • UaVariant added as allowed data type
  • honkyTonk tool to simulate address space updates
Improvements:
  • Unified and cleaned initialization of cache variables
  • Configuration.xsd: proper types for various flavours of integers (previously every int irrespectively of length and signedness was just "int")
  • createDiagram.sh creates diagrams of varied level of details