# RWCodec - Change Log

This document lists the changes for each RWCodec release and the work we are currently doing.

### Version 1.09.00

- Adding support for streaming LZ4 compression / decompression via an implementation of the icodec intefrace.

### Version 1.08.00

- Adding support for the LZ4 compression algorithm for chunk based compression/decompression. LZ4 offers extremely fast compression and decompression while sacrificing some compression ratio.

### Version 1.07.06

- Resolving chunkpack.exe crash when building assets on Android.

### Version 1.07.05

- Provides the ability to disable lzx encoding by defining package.rwcodec.use_lzx to false.

### Version 1.07.04

- Use EAMain as entry point for unit tests.

### Version 1.07.03

- Fix warnings on VS2012 with Windows SDK 7
- Fix warnings on clang
- Fix WinRT build errors

### Version 1.07.02

- FreeBSD support added
- Ported to WinRT

### Version 1.07.01

- Added additional platform support.
- XenonSDK-2.0.21119.0 (March 2012) build compatibility fix.

### Version 1.07.00

- Added Vita support (integrated from dev-vita branch)

### Version 1.06.06

- Removed EAStdC from rwcodec's SPU job uild dependencies.
- Fixed a potential memory leak in the zlib chunk decompressor.

### Version 1.06.05

- Chunkpack build fixes for VS2010.
- Re-enabled asserts for the lzma job in release configurations.
- Only force-enable assertions for SPU builds.
- Enabled bulk-build support.

### Version 1.06.04

- Changed the docs to be HTML based.
- Fixed build error for dll-tool configurations.

### Version 1.06.03

- Added CodeStripper support scripts.
- Fixed a missing #ifdef surrounding an assertion.

### Version 1.06.02

- Added #if !defined(EA_ASSERT_ENABLED) guards to the lzma and refpack job source files, in order to fix an issue with the latest EAC Basekit Reported by Bob Summerwill

### Version 1.06.01

- Removed default LZX support for PC builds. LZX is now only included on PC for tool configurations.
- Replaced old Endian package dependency with functionality in EAStdC
- Fixed build issues on pc64
- Added support for building as a dll for pc and pc64

### Version 1.06.00

- Added support for the LZMA codec to the chunked compression/decompression infrastructure.
- Added a command line option to chunkpack.exe, -u, to unchunkpack a file.
- Removed the ICodec::SetJob method in favor of ICodec::GetJobEntryPoint and ICodec::GetJobParameters methods. This was done in order to work around Job Manager's deprecation of Job objects.
- Reverted a change made to the initialization of the zlib library in the ZlibInflate/ZlibDeflate classes that broke backwards compatibility.

### Version 1.05.04

- A bug was fixed where including xcompress.lib for PC builds was breaking incremental linking.
- A bug was fixed where the chunk decompressor was asserting incorrectly on iOS configurations.

### Version 1.05.03

#### Changes.

- Support for rwstdc has been removed.
- Added support for the new zlib package. This is enabled by default, and can be disabled by setting the build property package.rwcodec.usezlib to false.
- Chunkpack avoids reprocessing files that have already been chunkpacked.
- Chunk size limitation has been replaced and warns on PS3 if chunks are too big to fit in local store.

### Version 1.05.02 - (March 3, 2010)

#### Changes

- Lowered job queue pressure by better leveraging the Job Manager event system.

#### Bug fixes.

- When the total file size was a multiple of the chunk size both the chunk compressor and decompressor would be unable to properly process the data.

### Version 1.05.01 - (February 3, 2010)

#### Bug fixes

- ETCR-313. The SPU chunk decompressor wasn't properly handling buffers that were not a multiple of 16-bytes in length. The data transfer of the last 16-byte segment would stomp over what existed next to it.
- ETCR-320. Corrected a resource leak caused by a memset in the descructor of a non-POD class.

### Version 1.05.00 - (December 11, 2009)

#### Changes

- ChunkDecompressor::SetNumberOfJobs() has been deprecated.
- BufferedChunkDecompressor::SetNumberOfJobs() has been deprecated.
- ChunkReader::SINGLEREADER_SleepOnAllDecompressions() has been
deprecated. Please use ChunkReader::SleepOnDecompressionGroup() instead.

#### New features

- PC64 and Wii support have been added to the chunk decompression framework.
- Asynchronous decompression has been added to the BufferedChunkDecompressor. To decompress a chunk packed buffer asynchronously you can use the new BufferedChunkDecompressor::DecompressAsync() and BufferedChunkDecompressor::SleepOn() methods.
- A method, ChunkReader::DecompressChunkData, was added to perform synchronous chunk decompression.

#### Behaviour changes

- The number of jobs parameter taken by the ChunkDecompressor and BufferedChunkDecompressor constructors is now ignored and now each chunk to be decompressed launches its own job. To control the physical execution resources that the chunk decompression jobs run on use the affinity mechanisms provided.
- Chunk size has been reduced from 160kb to 128kb to facilitate easier and more correct integration into the SPU local store. This has a knock-on effect in that tools using chunked compression (ie: chunkpack, or rwbigfile's bigfile tool) have to be rebuilt and as
does the data.

#### Bug fixes

- Occasional hangs in the chunk decompression jobs where the job would appear to pull incorrect data from the queue have been resolved.

### Version 1.04.00 - (September 30, 2009)

#### Changes

- None.

#### New features

- ETCR-84. rwcodec now has a codec that Sony's Edge zlib implementation. Refer to the documentation on rw::core::codec::ChunkDecompressor for details. Our thanks to our co-op, Kyle Loveless, who integrated this into rwcodec, and to Andy Younger, who provided the initial package and much support to Kyle during the implementation.

#### Bug fixes

- None.

### Version 1.03.01 - (October 21, 2008)

- Links to release notes for this and older versions are available on the package server.