summaryrefslogtreecommitdiff
path: root/CHANGELOG.md
blob: 91cb7a33e77260759d9640a5c19b9357e08ceaa1 (plain)
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
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
Major Changes in 0.15.2:
========================
Really minor fix release, mainly to fix a distribution issue

* Add missing file to distribution
* Fix sound recording fix in case of buffer wrapping

Major Changes in 0.15.1:
========================

* Fix some compatibility issues with FreeBSD
* Fix some minor issue with build
* Improve packaging with Meson
* Lot of C++ improves (clang-tidy)
* Fix some compatibility with no-Glibc libraries (like Musl)
* Fix minor leaks shutting down library
* Add Doxygen file to distribution
* Fix a longstanding issue related to surface updates where wrong surfaces were possibly used
* Fix compatibility with OpenSSL 3
* Updates and fixes for CI
* Use more random connection IDs to fix possible issues with proxies

Major Changes in 0.15:
======================

This is the first release in the new 0.15.x stable series. This release should
be ready for production use.

* Minor updates to CI
* Some compatibility with OpenSSL
* Change the behavior of handle_dev_start ignoring multiple start requests
* Ignore multiple calls to handle_dev_stop
* Pick up newer spice-common to fix a buffer overflow issue

Major Changes in 0.14.91:
=========================

**IMPORTANT**
0.14.91 is the first release candidate for the stable 0.15.x series. While some
bugs might still be present, it should be reasonably stable. If you are looking
for stability for daily use, please keep using the latest 0.14.x release.

* Support UNIX abstract sockets
* Fix some potential thread race condition in RedClient
* Many cleanups in the code
* Improve migration test script
* Update in protocol documentation
* Improve Meson build
* Removed CELT support
* Update CI
* Removed QXLWorker definition, it was deprecated 6 years ago
* Fix some compatibility with MacOS
* Fix some compatibility with Windows
* Move the project to C++
* Some fixes for SASL dealing with WebDAV
* Fix minor Coverity reports
* Add Doxygen support, manually built with "make doxy"
* Support more mouse buttons (up to 16 buttons)
* CVE-2020-14355 multiple buffer overflow vulnerabilities in QUIC decoding
  code

Major Changes in 0.14.3:
========================

Main changes are WebSocket and support for Windows.

* Add support for WebSocket, this will allow to use spice-html5 without proxy
* Support Windows, now Qemu Windows can be build enabling Spice
* Fix some alignment problem
* Converted some documentation to Asciidoc format to make easier to update,
  updated some
* Minor compatibility fix for PPC64EL and ARMHF
* Minor fixes for big endian machines like MIPS
* Avoid some crashes with some buggy guest drivers, simply ignore the invalid
  request
* Fix for old OpenSSL versions
* Minor fix for Windows clients and brushes, fixed an issue with Photoshop
  under Windows 7
* Add ability to query video-codecs
* Small use-after-free fix
* Fix for debugging recording/replaying using QUIC images
* Fix a regression where spice reported no monitors to the client
* Fix DoS in spicevmc if WebDAV used
* Updated and improved test migration script
* Some minor fixes to smartcard support
* Avoid possible disconnection using proxies using a in-flow keepalive
  mechanism

Major Changes in 0.14.2:
========================

Main changes are support for Meson build and graphic device info
messages allowing to better support multi-monitor configurations.

* CVE-2019-3813: fix off-by-one error in group/slot boundary check
* support H265 in stream-channel
* add support for building with meson/ninja
* minor tests fixes improving CI
* set char device state for smartcard, allowing Qemu optimization
* improve red-parse-qxl.c interface making it more consistent
* add some instrumentation for streaming device
* QXL interface: add a function to identify monitors in the guest
  (spice_qxl_set_device_info)
* add support for GraphicsDeviceInfo messages
* video-stream: prevent crash on stream reattach
* make channel client callbacks virtual functions
* bumped minimum required glib version to 2.38
* attempt to have a reliable led state for keyboard modifiers

Major Changes in 0.14.1:
========================

The main change in this release is the addition of a new protocol extension
in order to support streaming the remote display as a video stream rather than
going through the QXL protocol. Together with spice-streaming-agent, and/or with
more work on the qemu/spice-server side, this should allow streaming of 3D
accelerated VMs in the future. At this point, this part of spice-server is
still a work in progress (multi-monitor support and various features are
missing).

* add new org.spice-space.stream.0 channel used for passing an encoded video
  stream from the guest to the client
* add support for TCP_CORK to reduce the amount of packets that we send
* fix CVE-2018-10873
* fix cursor related migration crash
* fix regression causing sound recording to be muted after
  client disconnection/reconnection (introduced in 0.13.90)
* fix regression in corner cases where images could be sent uncompressed
  when they used to be compressed with QUIC
* disable TLS 1.0 support
* CELT 0.5.1 support is now disabled by default. If celt051-devel is installed
  at build-time, --enable-celt051/--disable-celt051 must be explicitly specified
* drop support for unsupported OpenSSL version. OpenSSL 1.0.0 or newer is now
  required
* bumped minimum required glib version to 2.32
* endianness fixes
* (small) leak fixes
* usual round of code cleanups
* not directly related to this release, but the upstream git repository is now
  hosted on gitlab.freedesktop.org

Major Changes in 0.14.0:
========================

This is the first release in the new 0.14.x stable series. This release should
be ready for production use.

* fix client mouse with virgl
* fix frozen display after seamless migration

Major Changes in 0.13.91:
=========================

*** IMPORTANT ***
0.13.91 is the first release candidate for the stable 0.14.x series. While some
bugs might still be present, it should be stable.

* set human-readable name on spice threads
* leak fixes
* robustness improvements (fix potential crashes in situation which should not
  happen on normal use)
* add sanity-checks for ORC library as it can abort spice-server when selinux
  is in use
* more code cleanups/improvements

Major Changes in 0.13.90:
=========================

*** IMPORTANT ***
0.13.90 is the first release candidate for the stable 0.14.x series. While some
bugs might still be present, it should be reasonably stable. If you are looking
for stability for daily use, please keep using the latest 0.12.x release.

* Close TCP connection early when client did not send the correct SPICE magic
  bytes: this allows VNC clients to gracefully fail when connecting to a SPICE
  port
* Fixes for CVE-2016-9577, CVE-2016-9578 and CVE-2017-7506
* Fix client being disconnected after migration (bug introduced in 0.13.3)
* Add a --enable-statistics configure option
* GLIB 2.28 is now a required build time dependency (used to be 2.22)
* Add VP9 encoding support when GStreamer is being used and misc
  streaming/encoding improvements
* more code refactoring/reorganization work

Major Changes in 0.13.3:
========================

*** IMPORTANT ***
The 0.13.x release series is an unstable release series, if you are looking for
stability for daily use, please use the latest 0.12.x release. We are trying to
keep the code as functional as 0.12, but regressions or bugs could still happen.

* Ongoing work on separating/encapsulating the existing codebase. Main
  highlight is that RedChannel/RedChannelClient have been converted to GObjects
* Statistics code is now disabled by default, if you need it,
  -DREDS_STATISTICS must be added to CPPFLAGS when building
* Improvements to replay utility
* Limit (deprecated/unusud) QXLMessage size to 100,000 characters for improved
  safety
* Build fixes on older distros (el6)
* Improve image quality in low bitrate situation when using the
  GStreamer backend

Major Changes in 0.13.2:
========================

*** IMPORTANT ***
The 0.13.x release series is an unstable release series, if you are looking for
stability for daily use, please use the latest 0.12.x release. We are trying to
keep the code as functional as 0.12, but regressions or bugs could still happen.

* Fixes for various CVEs
* Added GStreamer support to the video streaming code
* Fix old migration bug causing migration to never end in some cases
* Fix some vdagent-related regressions introduced in 0.13.1
* Added lz4 compression to the spicevmc channel
* Ongoing code cleanups

Major changes in 0.13.1:
========================

*** IMPORTANT ***
The 0.13.x release series is an unstable release series, if you are looking for
stability for daily use, please use the latest 0.12.x release. We are trying to
keep the code as functional as 0.12, but regressions or bugs could still happen.

* add spice_qxl_gl_scanout() spice_qxl_gl_draw_async() for local virgl support
* spice_server_set_keepalive_timeout() has been removed in favour of
  unconditionally sending keepalive probes every 10 minutes
* the rework started in 0.13.0 has moved forward. The global RedsState *reds
  variable has now been removed, GLib mainloop is now used for the RedWorker thread
  rather than an adhoc implementation, some core classes have been ported to
  GObject, ...
* some crash/leak fixes in corner cases

Major changes in 0.13.0:
========================

* Start of a large code rework to attempt to make the codebase more
  maintainable. With this first release, the huge red_worker.c file has been split
  in multiple smaller files.

* Added public spice_server_set_keepalive_timeout() to make it possible
  to tweak keepalive on all SPICE connection. This can prevent unwanted
  idle disconnections if proxies are used between the client and the host.
* Fix important memory usage when the webdav channel is used
* Do not disconnect when the client requests an unsupported compression type
* Fix potential race condition when using multiple QXL devices
* Fix display glitch when using XSpice
* Improve help string for 'replay -s'
* Fix crashes in corner cases (buggy spice-html5 + win10, vnc + SPICE port
  configured, USB webcam redirection over a slow link)
* Fix various compilation warning when building on 32 bit machines
* Do not build static libraries by default, this can be reenabled with
  --enable-static
* Fix small leak in MJPEG code

Major changes in 0.12.6:
========================
* Removed spicec client code, it has been superseded by remote-viewer and other
  spice-gtk based clients
* Unix socket support
* LZ4 support
* Let clients specify their preferred image compression format
* Allow to record and replay a spice-server session
* Fixes for CVE-2015-3247 CVE-2015-5260 and CVE-2015-5261
* spice-protocol submodule has been removed,, spice-protocol must now be
  installed when building spice-server
* Remove write polling in chardevs to reduce wakeups
* Various bugs, crashes fixes, code cleanups, ...

Major changes in 0.12.5:
========================
* Added Opus support. Celt support will be obsoleted in a future release.
* Addition of webdav channel
* Force use of TLS 1.0 or newer for TLS connections
* Reference manual
* Some optimizations improving CPU use
* Various bug fixes for race conditions, memory corruption, ... which could
  be triggered on client disconnections, migration, ... and cause spice-server
  to misbehave.
* Portability fixes
* Code cleanups

Major changes in 0.12.4:
========================
* log actual address spice-server binds to
* main_channel: fix double release of migration target data (rhbz#859027)
* red_channel: replace an assert upon threads mismatch with a warning (rhbz#823472)
* support for filtering out agent file-xfer msgs (rhbz#961848)
** new library export spice_server_set_agent_file_xfer
* mjpeg encoder statistics (mjpeg_encoder_get_stats)
* improve stream stats readability and ease of parsing
* fix for stuck display_channel over WAN (jpeg_enabled=true) (rhbz#977998)
* Use RING_FOREACH_SAFE and other SAFE macros (rhbz#887775)
* Some server/tests fixes.

Major changes in 0.12.3:
========================
* monitor client bandwidth and latency.
* dynamically adjust video stream quality based on client bandwidth & latency.
** new SPICE_MSGC_DISPLAY_STREAM_REPORT
** can also set SPICE_BIT_RATE environment variable to override.
* support arbitrary latency of audio stream wrt video stream:
** new SPICE_MSG_PLAYBACK_LATENCY
* notify agent on client disconnection
** new VD_AGENT_CLIENT_DISCONNECTED message
* better support for switching from qxl to vga mode
** new library export spice_qxl_driver_unload
* multiple monitor support in single channel fixes.
* stop streams before migration.
* don't send empty volume messages.
* Bugs fixed: rhbz#891326, rhbz#958276, rhbz#956345
* fixes to inputs, chardev, build fixes.

Major changes in 0.12.2:
========================
* Stable Release
* Skipped 0.12.1, it existed in git but was never released
* spice-server now requires glib2 (like qemu does)
* More robust ssl error and certificate handling
* Added support for websockets
* Tons of seamless migration bugfixes
* Also some none seamless migration bugfixes

Major changes in 0.12.0:
========================
* Stable Release
* support setting client monitor configuration via device
 QXLInterface::client_monitors_config
* support notifying guest of client capabilities
 QXLInterface::set_client_capabilities
* new capability for A8 Surface support
* Enable build on armv6+
* Option to quit server after first client disconnects
 spice_server_set_exit_on_disconnect

Major changes in 0.11.3:
========================
* !Development Release!
* This entry contains all 0.11.0 .. 0.11.3 changes.
* Support seamless migration: no loss of in transit messages. Still not
  supported for agent, smartcard and usb.
* Support a new rendering message, Composite, for much improved linux guest
  performance.
* Support arbitrary resolution & multiple monitors on a single display channel.
* Improved keyboard handling under network latency with new
  SPICE_MSGC_INPUTS_KEY_SCANCODE message.
* New libspice-server.so symbols:
 spice_server_set_seamless_migration
 spice_server_vm_stop
 spice_server_vm_start
 spice_qxl_monitors_config_async
* New capabilities:
 SPICE_DISPLAY_CAP_COMPOSITE
 SPICE_DISPLAY_CAP_MONITORS_CONFIG
 SPICE_INPUTS_CAP_KEY_SCANCODE
 SPICE_MAIN_CAP_AGENT_CONNECTED_TOKENS
 SPICE_MAIN_CAP_SEAMLESS_MIGRATE
* Misc:
 * char-device.c: Introducing shared flow control code for char devices
 * Enable build without client, cegui and slirp.

Major changes in 0.11.0:
========================
* !Development Release!
* 8817549..d905a1f
* now using git submodules: spice-common and spice-protocol.
* New spice protocol messages: (changes in spice-protocol, here for reference)
 * SPICE_MSG_MAIN_NAME, SPICE_MSG_MAIN_UUID
 * SPICE_MSG_DISPLAY_STREAM_DATA_SIZED
* New corresponding caps: (changes in spice-protocol, here for reference)
 * SPICE_MAIN_CAP_NAME_AND_UUID
 * SPICE_DISPLAY_CAP_SIZED_STREAM.
* Send name & uuid to capable clients
* add support for frames of different sizes RHBZ #813826
* server:
 * support a pre-opened file descriptor
 * Solaris support. Now using poll instead of epoll.
 * Support IPV6 addresses in channel events RHBZ #788444
 * other fixed RHBZ#: 787669, 787678, 819484
* spicec
 * alsa: use "default" instead of "hw:0,0"
 * volume keys support RHBZ #552539
 * other fixed RHBZ#: 78655, 804561, 641828
* solaris, mingw & windows, 32 bit fixes.
* enable server only build.
* GNULIB manywarnings.m4 & warnings.m4 module added.
* Many more bug fixes & code cleanups.
* spice-protocol no longer external.
* new server functions:
 + spice_server_set_name
 + spice_server_set_uuid
 + spice_server_set_listen_socket_fd
 + spice_server_is_server_mouse

Major changes in 0.10.1:
========================
* Mini header support
* Add server API for injecting a client connection socket
* Add Xinerama support to spicec
* Many bugfixes / code cleanups
* Requires spice-protocol >= 0.10.1

Major changes in 0.10.0:
========================
* 32 bit (little endian) server builds.
* ABI compatible with 0.8.2.

Major changes in 0.9.2:
=======================
* !Development Release!
* server: semi-seamless migration support (RHBZ 738266)
* client: semi-seamless migration support (RHBZ 725009, 738270)
* Various bugfixes / cleanups
* require spice-protocol >= 0.9.1

Major changes in 0.9.1:
=======================
* !Development Release!
* Multi-client support, disabled by default (experimental!) set the
  environment variable SPICE_DEBUG_ALLOW_MC before starting qemu to enable
* Add support for adding generic spicevmc chardev passthrough channels
* Add USB redirection channel (using generic spicevmc chardev passthrough)
* Various bugfixes / cleanups

Major changes in 0.9.0:
=======================
* !Development Release!
* volume synchronization between client and guest (client->guest only)
* turbo-jpeg used to avoid expensive color conversion in mjpeg encoder.
* Cleanups

Major changes in 0.8.2:
=======================
* server: sasl support (fdo bz 34795)
* server: support guest async io
* server: support guest suspend and hibernate
* server: add symbol versioning to libspice-server.so
* server: prevent running an old spice-server with a newer qemu
* server Bug fixes (RHBZ): 714801, 713474, 674532, 653545
* client Bug fixes (RHBZ): 712938, 710461, 673973, 667689
* require spice-protocol >= 0.8.1

Major changes in 0.8.1:
=======================
* client: Fix handling of --smartcard-db option
* client: Add --version option
* spicec-x11: Work around a bug in xsel
* spicec-x11: Don't crash on apps sending bad atoms as TARGETS
* server: Make copy paste support configurable
* server: Various fixes to agent <-> client data handling

Major changes in 0.8.0:
=======================
* client: exit nicely for --controller with no SPICE_XPI_SOCKET (rhbz#644292)
* client-x11: Use _exit rather then exit on X errors (rhbz#680763)
* client-x11: Fix keyb modifiers not syncing from guest to client (rhbz#679467)
* server: fix segfault on migration

Major changes in 0.7.3:
=======================
* Suport building with (and requires) libcacard-0.1.2
* Fixes for building with gcc-4.6
* Server: Drop unnecessary X11 and alsa requires from spice-server.pc
* Client: fix minor for old migration support
* Client: Remove spice-client watermark (rhbz#662450)

Major changes in 0.7.2:
=======================
* cmd-line-parser: fix wrong reporting of bad argument in --bla=val case
* Server: do not depend on libcacard and CEGUI (when enabled for the client)
* Server: send 1 instead of 4 as topdown flag "true" value
* Client: accept 4 as top down flag value for compatibility with older servers
* Client: stop blinking keyboard when out of focus
* Client: log subject-host mismatch, and raise ssl warnings to errors

Major changes in 0.7.1:
=======================
* Brown paper bag release
* Update SPICE_SERVER_VERSION
* Include server/tests/test_util.h in the make dist generated tarbals, so
  that they actually compile

Major changes in 0.7.0:
=======================
* Many small bugfixes to the spice client
* Support for smartcards (CAC)

Major changes in 0.6.3:
=======================
Major changes in this release:
* Foreign menu and controller support for the client for XPI / ActiveX
  browser plugin usage (same API as the 0.4 client)
* Copy and paste support in the client
* Image copy and paste support in the X client
* Fix fullscreen mode of the X client under compiz and KDE
* Various portability and bug fixes

Major changes in 0.6.2:
=======================
0.6.2 was skipped because a small but nasty bug was found while preparing
the release (and it was already tagged as 0.6.2 in git).

Major changes in 0.6.1:
=======================
Major changes in this release:
* New libspice API to handle backwards compatibility
* Fix X crash in X client
* Fix memory leaks and crashes
* Portability fixes

Major changes in 0.6.0:
=======================
Major changes in this releas:
* Various bugfixes
* Make build work on arm7
* Fix build for python 2.5
* Don't allow video streams on non-primary surface
* Fix shared memory leaks in client
* Add some new libspice-server APIs for configuration options
* Convert SpiceVDIPort API to generic SpiceCharDevice API
* Add capabilities negotiation to agent

Major changes in 0.5.3:
=======================

Major changes in this release:
* Various changes in the network protocol to make it more efficient.
* New commandline arguments to enable/disable jpeg and zlib-over-glz.
* Initial work on clipboard sharing added
* Fix color channel order for mjpegs when connecting to older spice
   server.

Major changes in 0.5.2:
=======================

This is the first release of the unstable 0.5.x series leading up to 0.6.
With this release the API of spice-server is considered stable, but
the network protocol and QXL PCI ABI are still unstable.

The major changes compared to the 0.4 series are:

* New, more efficient network protocol
* Support for offscreen surfaces in guest driver
* New spice-server API
* A marshalling/demarshalling system that isolates the network
  protocol parsing from the internal types
* A PCI parsing and validation layer making it easier to
  get backwards compatibility, cleaning up the internals ans
  makes security review easier.
* WAN support, including lossy compression using jpeg and
  zlib compression.
* Easier to build. No more dependencies on forked versions
  of pixman and cairo. Separate module spice-protocol containing
  headers used when building drivers and qemu.