Revision history for Perl extension OPCUA::Open62541.

0.011 2020-04-24
    - Test client and server can use a custom log file.
    - Improve signal handling in test server.
    - Implement test server runtime actions.
    - Implement server functions to read and write values:
      readValue(), writeValue()
    - Implement more server functions to add nodes:
      addVariableTypeNode(), addObjectNode(), addObjectTypeNode(),
      addViewNode(), addReferenceTypeNode(), addDataTypeNode()
    - Implement client function Service_browse().
    - Add prefix to QualifiedName hash keys.

0.010 2020-04-20
    - Make single stepping the test server actually work.

0.009 2020-04-17
    - Embed config and logger struct into client or server.  This
      avoids malloc() and free() races.  The config and logger may
      extend the lifetime of client or server.
    - No stand alone logger is possible anymore.  The Logger->new()
      method has been removed from the API.
    - After connect_async() the client needs 100 miliseconds before
      client run_iterate() may be called.  Add some sleeps to test.
    - Move C declarations to PREINIT section.
    - The test server can single step iterations to trigger timing
      races in client tests.

0.008 2020-04-14
    - Fix double free in set variant.
    - Test cleanup.
    - Variant can get and set array type.
    - Generate correct version number in OPCUA::Open62541::Constant.
    - Add NODECLASS constant.

0.007 2020-04-06
    - Fix memory leak in callback_async() and extend leak tests.
      The API does not invoke the connect callback in case of error.
      This requires special code to track the call data and to free
      it during destroy.
    - Implement UA_Client_readValueAttribute_async().
    - Implement client disconnect_async().
    - Add missing functions to pod documentation.
    - Test request id of async browse request.

0.006 2020-03-27
    - Remove server config clean() function from Perl API.
    - To run a test server manually, the timeout can be disabled.
    - Use Test::EOL to find trailing whitespace.
    - Generate constants from defines and enum in C header file.
    - Export constants from OPCUA::Open62541 into namespace.
      This breaks the existing API how modules are used and imported.
      Especially NS0ID uses underscore and new names are incompatible.
    - Place all generated constants into a single Perl module
      OPCUA::Open62541::Constant.

0.005 2020-03-12
    - Plug memory leaks in connect_async() in sendAsyncBrowseRequest(),
      which were found by the tests.
    - Allow to iterate client from test framework.
    - Croak if wrong output variable type, make API stricter.
    - Print log level and category as string with magic variables.
    - Write client log files to debug tests.
    - Improve leak ckecks in tests.
    - Refactor client and server tests.
    - Avoid posix signal handler in test server.
    - Grep for server startup in server log to avoid races in tests.
    - Test server writes log file.
    - Implement Logger class.
    - Refactor client callback.
    - In XS croak() print function name and errno strings.

0.004 2020-02-27
    - Use perlcritic and perltidy.
    - Test that adding a node in the server and reading its value
      from the client works.
    - Use an efficient way to export constants in Perl namespace.
    - Implement UA_Client_readValueAttribute().
    - Use a function jump table for packing all variant types.
    - Make this module run on multi threaded Perl by sprinkling dTHX
      into the XS file.
    - UA_DiscoveryConfiguration and UA_FilterOperand croak when
      trying to pack them.
    - Implement all missing packed functions for builtin types.
    - To test client and server easily, implement
      OPCUA::Open62541::Test::Server and OPCUA::Open62541::Test::Client
      to handle the other end.

0.003 2020-02-21
    - OPCUA::Open62541::sendAsyncBrowseRequest() uses optional output
      variable for request id.
    - Run static code analyse with cppcheck, remove false positives.
      The C code generated by XS is clean.
    - Use the generated VariableAttributes packed functions.
    - Implement sendAsyncBrowseRequest for client.
    - Implement OPCUA::Open62541::Variant->setScalar() and ->getScalar().
    - Make status code magic like $! containing number and string.
    - Test code with Perl::Critic.
    - Auto generate data conversion functions.
    - Support optional output parameter for addVariableNode().
    - Implement conversion functions for builtin data types.
    - Convert Perl hashes to NodeId, QualifiedName, and VariableAttributes.
    - Implement asynchronous connections for clients.

0.002 2020-02-14
    - Use Devel::CheckLib to ensure open62541 library is available.
    - Implement type conversions for setting scalars in variant type.
    - Connect client to server.
    - Implement client and its config.

0.001 2020-02-12
    - Implement basic functions needed to build a simple OPC UA server.
      That is "4.2 Building a Simple Server" and "11.2 Server Lifecycle"
      from the open62541 1.0.1 library documentation.
    - original version; created by h2xs 1.23 with -A -n OPCUA::Open62541
