forked from sccn/liblsl
-
Notifications
You must be signed in to change notification settings - Fork 0
/
CHANGELOG
157 lines (134 loc) · 10.8 KB
/
CHANGELOG
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
# Changes for liblsl 1.14
* change: liblsl requires a compiler with C++11 support, MSVC 2015 on Windows
# Changes for liblsl 1.13 (released 2020-01-30)
* fix: avoid an infinite loop if no port can be bound to (Tristan Stenner, discovered by Maximilian Kraus)
* add: unit tests to test basic operations on CI systems (Tristan Stenner, Matthew Grivich)
* fix: Fix for the sometimes appearing "no clock offsets found"-bug
* add: the path to the lsl_api.cfg can now be specified via the environment variable LSLAPICFG
* fix: updates to the included Boost, fixing Android compilation and reducing the number of warnings (Tristan Stenner)
* fix: patch Boost.Thread to avoid latency spikes on Windows (Tristan Stenner)
* add: lsl_stream_info_matches_query() to test a resolved stream against a query (Tristan Stenner)
* add: lsl_library_info() function returning some information about the dll/so file (Tristan Stenner)
* add: Raspberry Pi cross compilation support (Chadwick Boulay)
* fix: Boost.Serialization objects are only defined to fix compilation on ARM (Tristan Stenner)
* change: added move-semantics to most C++ API classes (Tristan Stenner)
* change: move error handling from C API to C++ implementation (Tristan Stenner)
* fix: Fix possible string stream corruption on 32bit platforms (Tristan Stenner)
* change: add some Continuous Integration and packaging configuration (Tristan Stenner)
* change: remove the option to build liblsl against system Boost (Tristan Stenner)
* fix: prevent undefined shift (Tristan Stenner)
* fix: several fixes to export macros (Tristan Stenner)
* change: lots of improvements on OS X (Chadwick Boulay)
* change: a lot of work on making Qt work on OS X (Chadwick Boulay)
* change: override default timestamps with lsl timestamps (Zechari Tempesta)
* change: Switched the build system to CMake (Tristan Stenner, Chadwick Boulay, David Medine, Matthew Grivich)
* fix: Fix for ipv6 link-local addresses on Linux. Previously would get a "Invalid argument" error. (Matthew Grivich)
* fix: fix several memory handling issues (Matthew Grivich)
* fix: Added an optional time_correction prototype to return uncertainty and remote_time as well as offset. (Matthew Grivich)
* fix: merged memory leak fixes (thanks to xloem)
Changes for liblsl 1.12
* Added support for iOS. (Matthew Grivich; de3f1318)
* changed constructor of lsl::xml_element to have default (David Medine; fd6a87b7)
* Add support for gcc 5 / MinGW (BorisMansencal)
* Fixed warning in GCC 4.9: 'lsl::stream_info' has a field 'lsl::stream_info::obj' whose type uses the anonymous namespace 1> class stream_info { (Matthew Grivich; 072563f5)
* Added optional time-stamp post-processing to the LSL inlet (Christian Kothe; d29ebde8)
* fixed broken relative paths (Giso Grimm; 1396ce6e)
* automatic version number extraction (Giso Grimm; a3e912ad)
* version number extraction and new location (Giso Grimm; 56f210a2)
Changes for liblsl 1.11
* Updated C/C++ examples to conform to XDF meta-data spec (per Luca Mussi). (Christian Kothe; 61d83de6)
* pugixml 1.0->1.7 . This fixes a build error in OS X. Also tested in Win 10 binaries with no apparent problems. (Chadwick Boulay; 067e1330)
* several changes to the build system and include files (Matthew Grivich, Chadwick Boulay)
* Fixed remaining references to old documentation. (Kyu Crane; ecf9cd09)
* Some fixes and updates here and there. (Christian Kothe; 65fa64e2)
* Fixed bug in push_chunk_multiplexed (Christian Kothe; 89339d08)
* Fixed regression in samples_available() (Christian Kothe; 5d0659da)
* Delete ._stream_info_impl.cpp (Christian Kothe; 92bfd87c)
* Updated consumer_queue::pop_sample() (Christian Kothe; 22662cb7)
* Fixed consumer_queue::pop_sample() to respect the timeout. (Steven Boswell; 678995dd)
* Fixed some memory leaks in the C# interop layer. (Steven Boswell; 06684ec6)
* Now multicasting can specify the local IP address to bind to. (Steven Boswell; 04a397e4)
* attempting to strip binaries (David Medine; bc216cc2)
Changes for liblsl 1.10
[Here a lot of changes happened that aren't included yet]
Changes for distribution 1.0.10 (library version 0.91)
* fix: in the C++ interface, the template pull_chunk() that fills a vector of time stamps did not clear this vector initially
(no recompile necessary, just a header fix)
* change: simplified the rule for deciding which chunk size to use when both the outlet and the inlet have a preference:
now the inlet's preference overrides the one of the outlet, if present.
Changes for distribution 1.0.18 (library version 0.92)
* fix: rebuild Linux and Mac libraries with most boost symbols stripped off (reducing the conflict of name clashes during dynamic linking, e.g. in MATLAB).
* Adding support for constructing inlets with unresolved stream_info's (if they are fully specified at construction).
Changes for distribution 1.0.19 (library version 0.93)
* removed the entire boost static library dependency across Win/Linux/Mac (instead now using the relevant .cpp files directly).
This simplifies the build process and reduces the symbol pollution on Linux/Mac.
* Documented compatibility with pugixml in C API.
* Documented the timeout in resolve_all better in C API.
Changes for distribution 1.0.20 (library version 1.00) -- internal code review.
* Added a continuous_resolver class that allows to resolve streams in the background.
* Added ability to query receive buffer size.
* Extended the error reporting in the C API (some functions now return error conditions).
* Added some extra argument checking in the stream_info constructor (negative channel count / sample rate, empty name).
* Upgraded from boost 1.47.0 to boost 1.50.0, and from portable_archive 4.2 to portable_archive 5.0.
* Improved code documentation and slightly refactored some of the library code for better readability / comprehensibility.
- renamed some internal variables
- enhanced documentation
- switched largely to boost.chrono based timing instead of boost.date_time (new standard)
- following boost synchronization guidelines more strictly (preferentially using the simplest primitive that gets the job done)
- made the stream_inlet more tolerant to protocol errors at the sender side (threads do not exit but try to reconnect until successful).
- using incomplete struct types in the LSL C API to prevent accidental type confusions.
- simplified (and robustified) the data and info fetching threads in the inlet.
- reduced the amount of data copying when pushing samples into the library
- the IPv4 and IPv6 stacks in the outlet now run on two separate threads to improve robustness in case an OS implements a protocol badly
- improved efficiency of stream_info accessors (now return const references instead of copies)
- now using boost.container.flat_set in the send_buffer instead of std.set (more efficient)
* Fixed a bug that prevented the use of LSL_FOREVER in the C API under 32-bit Mac (and possibly 32-bit Linux, too).
* Fixed some potential hangups in the inlet when the connection gets lost irrecoverably
(affected info(), time_correction() and pull_sample()).
* Fixed several missing exception handlers for the C API wrappers (increasing robustness in case of bad errors).
* Fixed a minor bug when resolving streams from a list of known peers (used the wrong time constant).
* Fixed 2 cases where strings were allocated incorrectly in the liblsl C API (lsl_get_xml() and lsl_pull_sample_str()).
* Fixed a bug where -0.0 would be transmitted as +0.0 (fixed in the portable_archive upgrade).
* Fixed several destructors that could have thrown exceptions and thus caused application termination.
* Fixed a bug that prevented the use of minimum buffer sizes that were larger than the lower capacity bound (then 4096).
Changes for distribution 1.0.21 (library version 1.02) -- after extensive stress testing.
* Added a stress-testing app under testing/StressTest
* Relaxed the timing of reconnect attempts by the inlet a bit.
* Fixed the handling of the chunk size when passed in at construction of an inlet or outlet (oversight)
* Fixed a rare abstract function call or access violation when cancelling resolve attempts
* Fixed a relatively rare access violation in the TCP server shutdown
* Fixed a relatively rare access violation in the stream outlet shutdown
* Fixed an occasional "not a socket" error in the TCP server shutdown
* Fixed handling of some unusual parameter settings in the inlet (buffer size=0)
Library version 1.03
* Added support for Windows XP (required more tolerance in case of missing IPv6 support)
* Fixed a case where an inlet could spam an outlet with rapid reconnect requests
* Rebuilt against a sufficiently old Linux to run out-of-the-box for most distributions
Library version 1.03.1
* Made the resolver tolerant w.r.t. invalid hostnames in the KnownPeers config variable
Library version 1.03.2
* Moved a definition inside the C++ header file to make SWIG happy (which is needed for certain features in the Python wrapper to be enabled)
* pylsl should now work out of the box on all Windows platforms and all recent Python versions
Library Version 1.03.3
* renamed internal use of boost namespace into lslboost to avoid link-time symbol conflicts
* Added the ability to push/pull length-delimeted string values in the C API (lsl_push_sample_buf / lsl_pull_sample_buf)
in addition to 0-terminated
* Added an experimental Java wrapper
Library Version 1.04
* Added a preprocessor switch to toggle between using the system-supplied boost or the shrink-wrapped version (in external/lslboost)
* Added documentation on how to get an updated boost distribution included with liblsl (and added a script to automate that)
Library Version 1.05
* Suppressed a spurious warning about non-matching query ids
Library Version 1.10 (mostly throughput optimizations)
* Added the ability to allocate ports outside the default port range once if it is exhausted (configurable, enabled by default).
* Replaced consumer_queue implementation by a lock-free single-producer/single-consumer queue
* Minor speed improvements in data_receiver: Removed a slow check in pull_sample() and calling local_clock() only every k'th iteration in data_thread().
* Changed the data layout of the sample class for faster allocation/deallocation.
* Speeded up the assignment/retrieval functions of the sample class (uses memcpy where appropriate).
* Added a factory class for fast allocation/deallocation of samples.
* Implemented a faster data transmission protocol (1.10) for samples, as alternative to the baseline protocol (1.00).
* Implemented a new version of protocol negotiation between tcp_server and data_receiver, using an HTTP-like request/response style.
* Fixed some potential rare hang bugs during shutdown of inlets and outlets (deadlocks/livelocks)
* Added the ability to transmit multiplexed chunks to the C and C++ APIs
* Minor improvements to documentation
* Added clean cross-platform Python and C# wrappers (pylsl.py and LSL.cs)