ChangeLog

Version
Changes introduced
Possible backward incompatibilities
JIRA Release notes
Testing outcome
1.7.0
(25-Nov-2024)


This release delivers a comprehensive restructuring of the Meta subsystem, consolidating multiple components (ASBuildInformation, ASComponentLogLevel, DBuildInformation, DServer, DQuasar) into a streamlined architecture with DLogLevel as the central component. The build system has been changed with a new design file processing approach and adapted logging configuration system. Migration utilities are provided to assist with transitioning to these new systems while maintaining backwards compatibility.

Standard quasar projects are expected to be backwards compatible.
However, please validate your project if any of the following apply:
  • If your project uses a custom design file merging system, you may need to adapt to the new DesignWithMeta.xml path.
  • Custom device implementations should be reviewed due to the removal of the address space linkage feature.
  • Projects with custom CMake configurations may need adjustment due to changes in device module generation.
Story
  • [OPCUA-3091] - SMD quasar branch merge: Integration Review
Task
  • [OPCUA-3212] - transformDesign() TypeError when compiling
  • [OPCUA-3226] - Source variable thread pool not initializing, causing read operations to fail
Sub-task
  • [OPCUA-3238] - Investigation on issue with threadpool on ltdb server
Bug
  • [OPCUA-3158] - CMake out-of-order calls when quasar prepares build
  • [OPCUA-3192] - Documentation generation does not work with SMD
  • [OPCUA-3211] - Valid design - fails to build (configuration.xsd uniqueness rule generation generates the same name for >1 rule)
  • [OPCUA-3228] - quasar: valid design -> build failure: Device logic children with non device logic parent generates non-compiling code
  • [OPCUA-3229] - Generated code contains ‘class struct’, causing build failure
New Feature
  • [OPCUA-3194] - Markdown documentation generation
Improvement
  • [OPCUA-3188] - Update AlmaLinux 9 documentation and bring collateral content up to date
  • [OPCUA-3191] - Expand assert for version formatting to development releases
  • [OPCUA-3201] - Markdown documentation options should also be available in quasar help
  • [OPCUA-3242] - Use quasar deprecation mechanism to cleanup Meta folder redundant files
quasar test suite notes:
  1. Core functionality verified across consolidated Meta module
  2. Migration utilities validated with existing ATLAS and JCOP servers
  3. Build system changes tested on all supported platforms
  4. Backwards compatibility layer confirmed with ATLAS and JCOP servers
1.6.1
(10-Aug-2023)


This release focuses on enhancing the functionality of calculated variables. It also addresses issues related to the uasdk travis test and introduces necessary dependencies in quasar's uasdk dockerfile. Additionally, the documentation has been updated to provide clarity on the manual and auto-update control for calculated variables.

(none known)
Task
  • [OPCUA-3040] - Calculated variables per request for CanOpenNG
  • [OPCUA-3072] - Calculated variables uasdk travis test uses wrong backend
  • [OPCUA-3075] - quasar's uasdk dockerfile misses dependency
User Documentation
  • [OPCUA-3077] - Calculated Variables Documentation for Manual Update and Auto Update Control
quasar test suite notes:
  1. open62541_test_methods not passing for the method arguments behaving differently from UASDK. This will be further investigated.
  2. StandardMetaData is ignored from testing in all tests due to some existing noncompliance.
1.6.0
(10-Jul-2023)


This release introduces the quasar Sanitizers, a new feature that assists developers in identifying and fixing code issues, such as bugs and memory leaks, during compilation or execution. This tool can be easily toggled on and off, depending on your needs. Please refer to the accompanying documentation for detailed instructions on its usage.

(none known)
Story
  • [OPCUA-3008] - Establish tooling for safer OPC UA servers for quasar users
Task
  • [OPCUA-3041] - quasar upgrade_project fails to create missing cmake dir
Bug
  • [OPCUA-2964] - Exception when using honkytonk quasar command
User Documentation
  • [OPCUA-3031] - Documentation for quasar Sanitizers
quasar test suite notes:
  1. open62541_test_methods not passing for the method arguments behaving differently from UASDK. This will be further investigated.
  2. StandardMetaData is ignored from testing in all tests due to some existing noncompliance.
1.5.18
(01-Mar-2023)


This release features a much improved Quasar ThreadPool (called internally a supervised threadpool) which affects all async (async methods and async source variables) operations of quasar. The order of execution of queued async operations within the same synchro domain is now guaranteed to be preserved. Also, lower overall latency is expected.

  • quasar device logic locks are now std::mutex from boost::mutex (a move that was announced already in March 2020)
  • to profit from guaranteed order of execution, in case of not using the standard options like of_containing_object, etc., the new option handpicked must be chosen and your mutex of choice needs to be registered using configure... methods of particular address-space object. Failing to do so will remain to work, but no benefits from order preservation will be observed.
  • when using methods, it is necessary to specify addressSpaceCallUseMutex, note the previous default was "no".
New Feature
  • [OPCUA-3000] - Metrics for the threadpool: current queued number of jobs, total taken num jobs, total finished num of jobs
Task
  • [OPCUA-2891] - Supervised Threadpool, context SourceVars
  • [OPCUA-2977] - QuasarThreadPool.[cpp,h] to be treated as framework files by the installa
  • [OPCUA-2978] - Changelog/notes regarding threadpool changes
  • [OPCUA-2990] - Supervised threadpool, the methods part
  • [OPCUA-2991] - add DesignValidator protection: method call use mutex implies class has mutex
  • [OPCUA-2992] - DesignValidator: deny any synchro domain for synchronous sourcevariable
  • [OPCUA-2993] - Clean-up lock/unlock base mthds
  • [OPCUA-2994] - Optimize out mutices map?
  • [OPCUA-2996] - Follow up of supervised threadpool
  • [OPCUA-3007] - Add synchro domains variety for the async methods test
Improvement
  • [OPCUA-3005] - Make addressSpaceCallUseMutex obligatory
quasar test suite notes:
  1. open62541_test_methods not passing for the method arguments behaving differently from UASDK. This will be further investigated.
  2. StandardMetaData is ignored from testing in all tests due to some existing noncompliance.
1.5.17
(16-Feb-2023)

Point release with different incremental updates

(none known)
Bug
  • [OPCUA-2918] - quasar docs: versions description not updated
  • [OPCUA-2920] - Deploying docs fails to create new tag dir
  • [OPCUA-2959] - Error with missing file at fresh project creation
  • [OPCUA-2974] - quasar v.1.5.17-rc0 "./quasar.py build" fails in the arg parsing
Task
  • [OPCUA-2919] - Consolidation of duplicates in Docs dir
  • [OPCUA-2952] - quasar's python_reqs.txt for Python3.9: lxml version is too strict
  • [OPCUA-2956] - Cosmetics: source variable exception missing spaces
Improvement
  • [OPCUA-2962] - Rethink quasar CLI
  • [OPCUA-2980] - release_nebula.py to handle the documentation versions
quasar test suite notes:
  1. open62541_test_methods not passing for the method arguments behaving differently from UASDK. This will be further investigated.
  2. StandardMetaData is ignored from testing in all tests due to some existing noncompliance.
1.5.16
(02-Dec-2022)

Point release with different incremental updates

(none known)
Task
  • [OPCUA-2844] - Clean up deprecated html documentation files
  • [OPCUA-2851] - what(): Attempted Source Variable operation, but Source Variable threads are not up.
  • [OPCUA-2870] - FreeVariable R/W controls in the config
  • [OPCUA-2898] - Central exception catch: print type
  • [OPCUA-2916] - quasar: Identify/mark potentially unused function
Improvement
  • [OPCUA-2885] - Remove reference to quasar.html when installing the framework
  • [OPCUA-2886] - External files restructured and paths update
  • [OPCUA-2888] - Consolidate original files
quasar test suite notes:
  1. open62541_test_methods not passing for the method arguments behaving differently from UASDK. This will be further investigated.
  2. StandardMetaData is ignored from testing in all tests due to some existing noncompliance.
1.5.15
(17-Nov-2022)

Back-fixes for OPCUA-2767 and OPCUA-2779 which turned out to be broken.
Your configuration schema is now stronger regarding isKey usage; for duplicate keys previously you'd only learn at runtime, now you also learn by the schema!
Bug
  • [OPCUA-2135] - Configurator broken for embedded objects of design-instantiation

New Feature

Task
  • [OPCUA-2827] - quasar docs review: "main"
  • [OPCUA-2828] - quasar docs review: alternative backends
  • [OPCUA-2830] - Update Changelog manually for the last time from html to rst
  • [OPCUA-2854] - config doc: notification that given element can't be present more than once, and the notification of defaulted instance name
  • [OPCUA-2863] - Fix quasar notes and external files paths
  • [OPCUA-2864] - Pointer to quasar.docs in quasar github main page

Improvement
  • [OPCUA-2833] - Move RTD Github actions to quasar service account and paths
  • [OPCUA-2835] - Information missing about EPEL dependencies
  • [OPCUA-2856] - Pull in quasar LogIt with updated fixes
  • [OPCUA-2860] - Create quasar service account secret and fix references
quasar test suite notes:
  1. open62541_test_methods not passing for the method arguments behaving differently from UASDK. This will be further investigated.
  2. StandardMetaData is ignored from testing in all tests due to some existing noncompliance.
1.5.14
(03-Aug-2022)

Back-fixes for OPCUA-2767 and OPCUA-2779 which turned out to be broken.
Your configuration schema is now stronger regarding isKey usage; for duplicate keys previously you'd only learn at runtime, now you also learn by the schema!
Bug
  • [OPCUA-2787] - defaultInstanceName misbehaving
  • [OPCUA-2789] - quasar creates non-compiling code in windows

New Feature
  • [OPCUA-2768] - Propagate isKey into unique constraint of Configuration XSD

Task
quasar test suite notes:
  1. open62541_test_methods not passing for the method arguments behaving differently from UASDK. This will be further investigated.
  2. StandardMetaData is ignored from testing in all tests due to some existing noncompliance.
1.5.13
(26-Jul-2022)
Ben's contrib w/ defaulting name of quasar objects in the configuration for classes which are always singletons (feature driver by StandardMetaData rework), with the necessary follow-up.
Expected impact on certain satellite modules (e.g. Cacophony/fwQuasar) if the new feature is used. Update relevant satellite modules.
New Feature
  • [OPCUA-2767] - support default name for singletons by configuration (i.e. no 'name' attr required in config - default to class name)

Task
  • [OPCUA-2779] - Follow-up of defaulting "name" attribute to be explicitly chosen
quasar test suite notes:
  1. open62541_test_methods not passing for the method arguments behaving differently from UASDK. This will be further investigated.
  2. StandardMetaData is ignored from testing in all tests due to some existing noncompliance.
1.5.12
(18-Jul-2022)
New features and progress in clean-up of the past artifacts.
(none known)
Bug
  • [OPCUA-2751] - generate as_doc fails for empty d:documentation content

New Feature

  • [OPCUA-2757] - Information on UA SDK version in quasar servers
  • [OPCUA-2758] - OPC UA toolkit path in server "extra info"

Task
  • [OPCUA-2750] - QuasarServerCallback removal (stale code clean-up action)
quasar test suite notes:
  1. open62541_test_methods not passing for the method arguments behaving differently from UASDK. This will be further investigated.
  2. StandardMetaData is ignored from testing in all tests due to some existing noncompliance.
1.5.11
(25-May-2022)

Merge-back from the CANopen (OPCUA-2739) is the main motivation.
(none known) New Feature
  • [OPCUA-2739] - Permit CalculatedVariable registration on quasar UaVariant dataType (merge-back from CANopen)

Task
  • [OPCUA-2702] - Get rid of quasar "device file is older than design" warning
quasar test suite notes:
  1. open62541_test_methods not passing for the method arguments behaving differently from UASDK. This will be further investigated.
  2. StandardMetaData is ignored from testing in all tests due to some existing noncompliance.
1.5.10
(21-Mar-2022)
New features and gradual improvements over existing ones.

Note the feature OPCUA-2619 "defaultConfigInitializerValue for CacheVariable" is not yet considered stable, its API might change.
(none known) New Feature
  • [OPCUA-2606] - d:documentation for enumerationValue
  • [OPCUA-2619] - defaultConfigInitializerValue for CacheVariables
  • [OPCUA-2627] - Add CalculatedVariableGenericFormula in the config_doc

Task
  • [OPCUA-2622] - Investigate [uastack] Opendir failed !!! Error
  • [OPCUA-2638] - Switch open62541-compat version we test against in quasar tests
  • [OPCUA-2666] - Design.xsd indentation fix

Improvement
  • [OPCUA-2646] - Default StackTraceSettings to be SYSTEM
  • [OPCUA-2676] - Main-wide catch of except in case of sth thrown from the QuasarServer ctr
quasar test suite notes:
  1. open62541_test_methods not passing for the method arguments behaving differently from UASDK. This will be further investigated.
  2. StandardMetaData is ignored from testing in all tests due to some existing noncompliance.
1.5.9
(17-Feb-2022)
Service releases bringing gradual improvements. (none known) Bug
  • [OPCUA-2574] - quasar build ignores non-existing build config file

New Feature
  • [OPCUA-2567] - SourceVariables write handler could profit from what() method for an automatic catch of exception

Task
  • [OPCUA-2522] - Remove http://opcfoundation.org/UA/SecurityPolicy#Basic128Rsa15 (deprecated)
  • [OPCUA-2569] - Improve getFullName() for single item nodes
  • [OPCUA-2572] - Profit from std::exception::what() in readValue, and add variable addresses
  • [OPCUA-2578] - quasar manual for CC7: update to python3, remove jre and subversion
  • [OPCUA-2591] - Put SingleNodeVariable in the quasar design diagrams
quasar test suite notes:
  1. open62541_test_methods not passing for the method arguments behaving differently from UASDK. This will be further investigated.
  2. StandardMetaData is ignored from testing in all tests due to some existing noncompliance.
1.5.8
(09-Dec-2021)
Service releases bringing gradual improvements.
(none known)
Bug
  • [OPCUA-2536] - Formula elaboration is forgotten for status formulas
  • [OPCUA-2544] - quasar 1.5.7 compilation error with gcc 11.1.0

New Feature
  • [OPCUA-2533] - "pow" in CalculatedVariables, as the alternative to "^" operator
  • [OPCUA-2537] - Content-order-aware sequence removal in configuration decorators
  • [OPCUA-2538] - Have Configuration.xsd automatically indented/ pretty-printed
quasar test suite notes:
  1. open62541_test_methods not passing for the method arguments behaving differently from UASDK. This will be further investigated.
  2. StandardMetaData is ignored from testing in all tests due to some existing noncompliance.
1.5.7
(02-Nov-2021)
The main feature is the output from UASDK tracing into stdout, which very much simplifies diagnosing issues related to network, files, permissions and other OS-alike aspects when starting up and running the server.

We encourage UASDK-based server developers to turn on UaStackTraceEnabled in the shipped ServerConfig.xml and files and set UaStackTraceLevel to SYSTEM.
CMP00065 is now turned on (i.e. "NEW" behaviour). See also release notes from quasar nebula.b1 (this table, some rows below). The proposed way of dealing with it is adding the following entry in your CMakeEpilogue.cmake (and adding this file, in case you do not have it):

set_property(TARGET ${EXECUTABLE} PROPERTY ENABLE_EXPORTS TRUE) 

New Feature
Task
  • [OPCUA-2463] - Port CMP0065 policy to new
  • [OPCUA-2510] - Document CMP00065-related changes in quasar ChangeLog
quasar test suite notes:
  1. open62541_test_methods not passing for the method arguments behaving differently from UASDK. This will be further investigated.
  2. StandardMetaData is ignored from testing in all tests due to some existing noncompliance.
1.5.6
(03-Sep-2021)
A release dedicated to CalculatedVariables enhancements and fixes
(none known)
Bug
  • [OPCUA-2466] - No initial computation for any formulas with cache_variables as inputs

New Feature
  • [OPCUA-2456] - Escape dash and slash in CalculatedVariables formulas and variable names
  • [OPCUA-2461] - (Initial) test for Calculated Variables
  • [OPCUA-2464] - config-entries to instantiate ParserVariables

Task

Improvement
  • [OPCUA-2462] - Update/extend calc vars doc (esp. generic formulas)
quasar test suite notes:
  1. open62541_test_methods not passing for the method arguments behaving differently from UASDK. This will be further investigated.
  2. StandardMetaData is ignored from testing in all tests due to some existing noncompliance.
1.5.5
(27-Jul-2021)
Optimized the CI testing, reworked some scripts, cleaned-up. quasar fixed some noncompliance wrt address-space info model.
If you use open62541-compat, please use 1.4.0 or later.
Bug
  • [OPCUA-2365] - quasar CI test "test_cache_variables" non passing as non-OPCUA compliant
  • [OPCUA-2418] - test_config_entry missing DataType (i.e. defaults to BaseDataType)

Task
  • [OPCUA-2355] - quasar servers, when used as shared objects, not to cannibalize Ctrl-C handler
  • [OPCUA-2400] - "nullAllowed" arrays (config-initialized) should have DataType of BaseDataType

Improvement
  • [OPCUA-2372] - quasar to use open2541 1.2X (i.e. open62541-compat 1.4.x) for CI
  • [OPCUA-2373] - travis.yml global variable for open62541-compat version to test against
  • [OPCUA-2374] - augment reference NS2 w/ additions from UaSak 0.6
  • [OPCUA-2421] - shallow clone of quasar in quasar CI
  • [OPCUA-2422] - quasar CI: ignore StandardMetaData for current (temporary) incompliance with UA data model
  • [OPCUA-2423] - Put common parts of CI scripts into block scripts
quasar test suite notes:
  1. open62541_test_methods not passing for the method arguments behaving differently from UASDK. This will be further investigated.
  2. StandardMetaData is ignored from testing in all tests due to some existing noncompliance.
1.5.4
(22-Jun-2021)
Extended coverage in tests and many individual improvements.
(none known)
Task
  • [OPCUA-2274] - Simplify travis.yml
  • [OPCUA-2330] - "./quasar.py style_it" missing doc
  • [OPCUA-2352] - CI, reference nodesets checks for cases: cache_variables, source_variables, methods, config_entries

Improvement
  • [OPCUA-2323] - .gitignore in quasar-based servers to go user-managed
  • [OPCUA-2334] - Unwrackify quasarCommands.html
  • [OPCUA-2336] - warning: extra ‘;’ [-Wpedantic] in ../AddressSpace/include/ASDelegatingMethod.h and few more
  • [OPCUA-2339] - The output of external_tool_check might be confusing
  • [OPCUA-2340] - Something fishy about ArrayTools
  • [OPCUA-2348] - Fix mixed indent/style of Design.xsd
(potential remarks were sent in the release email)
1.5.3
(21-May-2021)
OPCUA-2312 is needed for fixing Poverty extension module.
(none known)
Task
  • [OPCUA-2312] - Expose Oracle.get_cache_variable_setter arguments part (useful for Poverty)

Improvement
  • [OPCUA-2304] - ArrayTools error when compiling with newer g++
  • [OPCUA-2313] - Remove const constraint in PassByValue setters and cleanup
(potential remarks were sent in the release email)
1.5.2
(13-Apr-2021)
The primer to testing quasar (in its CI) via comparing dumped node-sets against reference node-sets.

Plus a couple of usual fixes and improvements.
(none known)
Bug
  • [OPCUA-2232] - Design diagram: empty class visualization for pure-methods class
  • [OPCUA-2246] - OutputArguments badly propagated

Task
  • [OPCUA-1340] - --create-certificate fails when server instance is running (i.e. can't open new connections)
  • [OPCUA-2182] - quasar's Utils.h, ASUtils.h and QusarThreadPool.h to go Quasar managed
  • [OPCUA-2244] - Document FreeVariable in config_doc of quasar servers
  • [OPCUA-2257] - Apply NodeSetCompare in the CI, primer

Improvement
  • [OPCUA-2264] - "All tests passed" message to be printed AFTER all tests
(potential remarks were sent in the release email)
1.5.1
(16-Feb-2021)
Various fixes and improvements.
Note:
  • --create-certificate built-in command is getting deprecated. In this version we add a warning whenever it is used. In one of future versions this command might get completely removed.
Bug
  • [OPCUA-2137] - Quasar methods, with device logic, with uncaught exception from inside, can crash server?
  • [OPCUA-2155] - symlink_runtime_deps broken with style_it branch
  • [OPCUA-2170] - ./quasar generate config_doc fails
  • [OPCUA-2171] - async_methods bad casting between OpcUa_StatusCode
  • [OPCUA-2177] - Missing "Value restrictions" in the config doc
  • [OPCUA-2186] - ConfigurationDocumentation HTML: missing content

New Feature
  • [OPCUA-2121] - Make SERVERCONFIG_LOADER default
  • [OPCUA-2138] - 'project-wise' astyle invocation (proposal)
  • [OPCUA-2172] - Duplicate CI test "uasdk_test_sync_methods" into the async version

Task
  • [OPCUA-2086] - Split travis CI tests into limited (open62541-only) and full (open62541 + UASDK) versions
  • [OPCUA-2162] - Deprecation warning on certificate creation for quasar servers
  • [OPCUA-2176] - Can detect too old astyle?

Improvement
  • [OPCUA-2163] - Fix occasional "unused result", "unused function" warning in quasar builds
  • [OPCUA-2164] - Server-wide catching of exceptions that are not derived from std::exception
(potential remarks were sent in the release email)
1.5.0
(07-Jan-2021)
nebula.B3 merged to classic master. This is the common point from where both main branches start off.
(none known)
Task
  • [OPCUA-2105] - Fix quasar version format in new release scripts (release_nebula) and branch name back to classic
  • [OPCUA-2109] - Review quasar.html doc file; plenty of info to be updated
(potential remarks were sent in the release email)
nebula.B3
(07-Jan-2020)
Abandoning home-brew files.txt parser into JSON (this release brings benefits mostly to quasar developers)
(none known)
Task
  • [OPCUA-2084] - XML or JSON for future format of original_files.txt and files.txt
  • [OPCUA-2103] - Document QUASAR_LOG_LEVEL

Improvement
  • [OPCUA-2063] - Simplify manage_files module: default properties per directory
(potential remarks were sent in the release email)
nebula.B2
(04-Jan-2020)
Different incremental changes.
  • note that with this release, Device/CMakeLists.txt becomes 100% quasar managed. This file will get overwritten with subsequent upgrades. Move your custom stuff AWAY from that file.
  • for the first time, the upgrade process is kind of interactive and if chosen it will modify your Design. We have that feature works fine (and the backup file gets created) but still, be careful.
Task
  • [OPCUA-2073] - Device's CMakeLists.txt to go quasar-managed
  • [OPCUA-2088] - Convert original_files from legacy format to json, may imply some clean-up of original_files.txt
  • [OPCUA-2090] - Automate projectShortName for non being empty

Improvement
  • [OPCUA-2065] - UTF-8 characters might not be supported on non-UTF8 systems (present in quasar...)
  • [OPCUA-2070] - Python's standard logging for quasar python tooling
  • [OPCUA-2101] - Add more (optional) logging for address-space construction (would deserve separate log component probably)

Bug
  • [OPCUA-2091] - Do not add property mapping for single variable nodes
(potential remarks were sent in the release email)
nebula.B1
(25-Nov-2020)
The reason for move between A.x and B.x branch is (not so likely) Design schema backwards-incompat change. In addition we get extensions of CI testing and some smaller improvements.
Pay attention to the column on the right, there might be some incompatibilities.
  • If you use open62541-compat, you need version 1.3.6 or later.
  • Common/include/Utils.h is finally a 100% quasar file. If (unlikely) you have custom mods to this file, please spawn these as a separate, user-supplied file. Otherwise you will lose your custom changes.
  • In this version it is required that the "projectShortName" field in your Design is non-empty. If you haven't named your project so far, it's time to do it. This name will propagate into automatically generated documentation and in future also to build scripts, etc.
  • Important if you build any shared objects from quasar build system: with nebula.A8 we started requiring CMake version at least 3.10. However that also brings CMP0065. If you build any shared objects within your quasar project build system (e.g. for quasar Poverty, or for Common CAN module, etc ...) you might want to double check if ENABLE_EXPORTS is set on the .so targets. This release provides transitional protection for CMP0065 by setting the behaviour to old, however the old behaviour might be discontinued by CMake in future.
Bug
  • [OPCUA-2074] - CMake required 3.4 (in 3.3 still OK) breaks compatibility for shared objects

New Feature
  • [OPCUA-2007] - Travis CI extensions: dump address space

Task
  • [OPCUA-1775] - Restrict isKey usage to config-entry (backwards-incompatible Design schema change)
  • [OPCUA-2075] - Common/Utils.h to get into quasar control
  • [OPCUA-2076] - supply default of project short name, force usage.

Improvement
  • [OPCUA-2072] - Extend design validation for isKey without device logic
(potential remarks were sent in the release email)
nebula.A10
(18-Nov-2020)
A critical bug fixed that prevented an user from using quasar. Added logging of startup info. Other improvements for simplified maintenance of the project.
(none known)
Bug
  • [OPCUA-1668] - Class with different parents leads to compile error

New Feature
  • [OPCUA-2048] - Log server startup information (command line args, working directory etc) -- nebula context

Improvement
  • [OPCUA-1815] - Improve restriction parsing
  • [OPCUA-2062] - Simplify manage_files module: use DesignInspector to parse Design
  • [OPCUA-2066] - Simplify manage_files module: 1. refactoring
(potential remarks were sent in the release email)
nebula.A9
(10-Nov-2020)
New CI tests and extensions, colorful global exception messages, methods synchronization support...
If you use open62541-compat, you need version 1.3.5 or later. Bug
  • [OPCUA-1041] - Non-delegated arrays don't respect per-design size constraints

New Feature
  • [OPCUA-1259] - Synchronization support for methods
  • [OPCUA-2049] - Test for config restrictions (part 1: Design)

Improvement
  • [OPCUA-2042] - Selective travis CI test
  • [OPCUA-2050] - Schema restriction: restrictionByPattern's pattern can't by empty
  • [OPCUA-2052] - Make global exception message more striking (visible)
(potential remarks were sent in the release email)
nebula.A8
(05-Nov-2020)
Quasar is now much more consistent on null setters.
Also, see the new improvements.
(none known)
New Feature
  • [OPCUA-1273] - Use overloads with QUASAR_NULL (or so) data-type to improve null setters

Improvement
  • [OPCUA-1770] - quasar.py build, determine chosen builder from the "build" directory if possible
  • [OPCUA-2033] - Improve travis runner for concurrency
  • [OPCUA-2038] - quasar to require cmake version at least 3.10 (issues with 3.3 were identified)
(potential remarks were sent in the release email)
nebula.A7
(22-Oct-2020)
Whole work done was kind of important: see the right-most column.
If you use open62541-compat, you need version 1.3.4 or later. Bug
  • [OPCUA-1603] - quasar arrays with config initializer, with value restrictions, do not build
Task
  • [OPCUA-1971] - Expose configentry as OPC UA property - for scalars
Improvement
  • [OPCUA-2019] - New CI test dedicated to config entries
  • [OPCUA-2022] - Add a script to run CI test locally
(potential remarks were sent in the release email)
nebula.A6
(13-Oct-2020)
Spotlight: major extensions in testing of the project.
(none known)
Bug
  • [OPCUA-2003] - Unable to generate Address Space doc

Task
  • [OPCUA-1992] - Removal of (home-brew) backup indenter (astyleSubstitute.py)
  • [OPCUA-2002] - Travis CI extensions: run the server(s) after building them.
  • [OPCUA-2006] - Travis CI extensions: supply actual config files
(potential remarks were sent in the release email)
nebula.A5
(30-Sep-2020)
Just steps forward ...
If you use open62541-compat, you need version 1.3.2 or later.
Task
  • [OPCUA-1890] - Fix streaming into astyle
  • [OPCUA-1988] - Follow-up renaming of raw_input() to input() in Python3
Improvement
  • [OPCUA-1990] - Improve error message for address space construction
(potential remarks were sent in the release email)
nebula.A4
(29-Sep-2020)
Service release for OPCUA-1984 mostly. Certain design files might now get invalidated by the new feature of the validator, OPCUA-1983.
New Feature
  • [OPCUA-1983] - New validator condition: d:object allowed only when "configureByDesign"

Task
  • [OPCUA-1984] - Multiple return values per method mishandled (was: [OPCUALARLTDB SUPPORT] server don't start BadNodeIdExists)
(potential remarks were sent in the release email)
nebula.A3
(24-Sep-2020)
Service releases fixing two issues.
(none known)
Bug
  • [OPCUA-1972] - CLONE - Configurator: regression from 1.3.x to 1.4.1, breaks build

Task
  • [OPCUA-1969] - Missing colorama dependency in quasar doc
  • [OPCUA-1981] - Nextgen design diagrams flawed when class is totally empty
(potential remarks were sent in the release email)
nebula.A2
(15-Sep-2020)
Mostly: new CI tests.

(none known)
Task
(potential remarks were sent in the release email)
nebula.A1
(14-Sep-2020)
First release of the nebula branch.
  • Python2 is no longer invoked (the call to Python3 is specifically made)
  • nebula no longer has the AppVeyor CI so from now on the basic compatibility against Windows is not guaranteed in the nebula branch,
Task
  • [OPCUA-1943] - quasar's Python shebang to Python3
  • [OPCUA-1960] - Removal of unconditional AppVeyor checks in quasar-nebula
  • [OPCUA-1961] - Fix create_release script for nebula
  • [OPCUA-1962] - Rework of module compat check: part1: removal
(potential remarks were sent in the release email)
1.4.2
(27-Aug-2020)
Last phase of NextGen transitions to Jinja2 and additions of FreeVariable concept.
(none known)
Bug
  • [OPCUA-1922] - quasar invocation to astyle is not checked for return code

New Feature
  • [OPCUA-1718] - Test and merge LogIt master (with change OPCUA-1671 - LCG_96 build) to quasar

Task
  • [OPCUA-1895] - Add recommendations on whitespace for Jinja transforma
  • [OPCUA-1896] - FreeVariable concept for quasar
  • [OPCUA-1897] - Update python_requirements.txt
  • [OPCUA-1928] - Rework source variables with Jinja

Improvement
  • [OPCUA-1332] - add means to determine quasar version from quasar.py
  • [OPCUA-1760] - Clean-up of device logic classes
  • [OPCUA-1766] - Improve UA_DISABLE_COPY and private constructor idiom, go to =delete
  • [OPCUA-1881] - Remove parent struct (C++ code) from DesignInspector


(potential remarks were sent in the release email)
1.4.1
05-Jun-2020
Next phase of NextGen transition: improvements, further removal of XSLT. New validator is introduced.
  • quasar now features a new Design Validator which is much stronger than the previous solution. It might mean to catch issues in your Designs, even if the servers build just fine.
Bug
  • [OPCUA-1804] - Validate presence of d:mutex when any dependent lock is requested
  • [OPCUA-1816] - Documentation for array type cacheVars omitted from generated configuration.xsd
  • [OPCUA-1851] - Wrong text in ConfigDoc.html (designToConfigDocumentationHtml.jinja transform)
  • [OPCUA-1854] - Configuration decoration backwards compatibility broken (since 1.3.6)
  • [OPCUA-1863] - ./quasar.py symlink_runtime_deps does not work with quasar 1.4.1
  • [OPCUA-1866] - Documentation: broken link for CalculatedVariables.html documentation
  • [OPCUA-1873] - NextGen configurator fails for GenericSNMP server both with 1.4.0 and pre-1.4.1
  • [OPCUA-1878] - configuration documentation: missing default values and mandatory/optional
  • [OPCUA-1879] - AddressSpace classes incorrectly want to initialize from config when 'valueAndStatus'
  • [OPCUA-1880] - Validator not catching array and initialValue presence

New Feature

Task
  • [OPCUA-1778] - initialValue validation
  • [OPCUA-1780] - Catch and ban all instantiations from design where there is any config data (config entries or config-initialized cache variables)
  • [OPCUA-1798] - Catch CV array with valueAndStatusInitializer in validateDesign target (now is in AS classes generation)
  • [OPCUA-1799] - Guarantee initialStatus presence when initializeWith=initialValue in NextGen code gen
  • [OPCUA-1849] - Translate quasar diagrams generator to Jinja2
  • [OPCUA-1850] - Revamp design validator

Improvement
  • [OPCUA-1758] - Remove deprecated files from ancient times
  • [OPCUA-1856] - Address Space documentation using NextGen transforms
  • [OPCUA-1859] - Configure AS/device objects retaining original order from config.xml file using xsdcxx content_order mechanism
  • [OPCUA-1861] - expose quasar exception handler for 3rd party extensions
  • [OPCUA-1867] - Better debug for Jinja templates
  • [OPCUA-1868] - Add docs to writers of transforms and code transformations
(potential remarks were sent in the release email)
1.4.0
04-May-2020
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.

Bug
  • [OPCUA-1804] - Validate presence of d:mutex when any dependent lock is requested
  • [OPCUA-1816] - Documentation for array type cacheVars omitted from generated configuration.xsd
  • [OPCUA-1851] - Wrong text in ConfigDoc.html (designToConfigDocumentationHtml.jinja transform)
  • [OPCUA-1854] - Configuration decoration backwards compatibility broken (since 1.3.6)
  • [OPCUA-1863] - ./quasar.py symlink_runtime_deps does not work with quasar 1.4.1
  • [OPCUA-1866] - Documentation: broken link for CalculatedVariables.html documentation
  • [OPCUA-1873] - NextGen configurator fails for GenericSNMP server both with 1.4.0 and pre-1.4.1
  • [OPCUA-1878] - configuration documentation: missing default values and mandatory/optional
  • [OPCUA-1879] - AddressSpace classes incorrectly want to initialize from config when 'valueAndStatus'
  • [OPCUA-1880] - Validator not catching array and initialValue presence

New Feature

Task
  • [OPCUA-1778] - initialValue validation
  • [OPCUA-1780] - Catch and ban all instantiations from design where there is any config data (config entries or config-initialized cache variables)
  • [OPCUA-1798] - Catch CV array with valueAndStatusInitializer in validateDesign target (now is in AS classes generation)
  • [OPCUA-1799] - Guarantee initialStatus presence when initializeWith=initialValue in NextGen code gen
  • [OPCUA-1849] - Translate quasar diagrams generator to Jinja2
  • [OPCUA-1850] - Revamp design validator

Improvement
  • [OPCUA-1758] - Remove deprecated files from ancient times
  • [OPCUA-1856] - Address Space documentation using NextGen transforms
  • [OPCUA-1859] - Configure AS/device objects retaining original order from config.xml file using xsdcxx content_order mechanism
  • [OPCUA-1861] - expose quasar exception handler for 3rd party extensions
  • [OPCUA-1867] - Better debug for Jinja templates
  • [OPCUA-1868] - Add docs to writers of transforms and code transformations
(potential remarks were sent in the release email)
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!
  • If you use open62541-compat, please use version 1.2.2 or newer.


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
(potential remarks were sent in the release email)
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)
(potential remarks were sent in the release email)
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
(potential remarks were sent in the release email)
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)
(potential remarks were sent in the release email)
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
(potential remarks were sent in the release email)
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))
(potential remarks were sent in the release email)
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
(potential remarks were sent in the release email)
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
(potential remarks were sent in the release email)
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
(potential remarks were sent in the release email)
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'
(potential remarks were sent in the release email)
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
(potential remarks were sent in the release email)
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
(potential remarks were sent in the release email)
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
(potential remarks were sent in the release email)
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
(potential remarks were sent in the release email)
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
(potential remarks were sent in the release email)
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
(potential remarks were sent in the release email)
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)
(potential remarks were sent in the release email)
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
(potential remarks were sent in the release email)
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
(potential remarks were sent in the release email)
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
(potential remarks were sent in the release email)
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
(potential remarks were sent in the release email)
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
(potential remarks were sent in the release email)
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
(potential remarks were sent in the release email)
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
(potential remarks were sent in the release email)
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
(potential remarks were sent in the release email)
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
(potential remarks were sent in the release email)
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
(potential remarks were sent in the release email)
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
(potential remarks were sent in the release email)
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
(potential remarks were sent in the release email)
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
(potential remarks were sent in the release email)
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
(potential remarks were sent in the release email)
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
(potential remarks were sent in the release email)
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
(potential remarks were sent in the release email)
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
(potential remarks were sent in the release email)
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
(potential remarks were sent in the release email)
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
(potential remarks were sent in the release email)
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
(potential remarks were sent in the release email)
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
(potential remarks were sent in the release email)
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
(potential remarks were sent in the release email)
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
(potential remarks were sent in the release email)
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
(potential remarks were sent in the release email)
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
(potential remarks were sent in the release email)
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


(potential remarks were sent in the release email)