blob: e924a8a56d7d4b85fd8985b755cab196e7c92932 [file] [log] [blame] [view]
# Changelog
## Work In Progress
- Added `0b` prefixed binary numbers.
- Added `WUFFS_BASE__PIXEL_BLEND__SRC_OVER`.
- Added `WUFFS_BASE__PIXEL_FORMAT__BGR_565`.
- Added `WUFFS_CONFIG__MODULE__BASE__ETC` sub-modules.
- Added `auxiliary` code.
- Added `base` library support for UTF-8.
- Added `base` library support for `atoi`-like string conversion.
- Added `choose` and `choosy`.
- Added `cpu_arch`.
- Added `doc/logo`.
- Added `endwhile` syntax.
- Added `example/cbor-to-json`.
- Added `example/convert-to-nia`.
- Added `example/imageviewer`.
- Added `example/json-to-cbor`.
- Added `example/jsonfindptrs`.
- Added `example/jsonptr`.
- Added `example/sdl-imageviewer`.
- Added `slice base.u8 peek/poke` methods.
- Added `std/bmp`.
- Added `std/bzip2`.
- Added `std/cbor`.
- Added `std/json`.
- Added `std/nie`.
- Added `std/png`.
- Added `std/tga`.
- Added `std/wbmp`.
- Added `tell_me_more?` mechanism.
- Added SIMD.
- Added alloc functions.
- Added colons to const syntax.
- Added double-curly blocks.
- Added interfaces.
- Added iterate advance parameter.
- Added preprocessor.
- Added single-quoted strings.
- Added slice `uintptr_low_12_bits` method.
- Added tokens.
- Changed `gif.decoder_workbuf_len_max_incl_worst_case` from 1 to 0.
- Changed default C compilers from `clang-5.0,gcc` to `clang,gcc`.
- Changed the C formatting style; removed the `-cformatter` flag.
- Changed what the `std/gif` benchmarks actually measure.
- Made `wuffs_base__pixel_format` a struct.
- Made `wuffs_base__pixel_subsampling` a struct.
- Made `wuffs_base__status` a struct.
- Prohibited iterate loops inside coroutines.
- Removed `ack_metadata_chunk?`.
- Removed `wuffs_base__frame_config__blend`.
- Renamed I/O `available` methods to `length`.
- Renamed `decode_io_writer?` methods to `transform_io?`.
- Renamed `example/library` to `example/toy-genlib`.
- Renamed `load` and `store` to `peek` and `poke`.
- Renamed `{read,writ}er_io_position` to `{read,writ}er_position`.
- Renamed `set_ignore_checksum!` as a quirk.
- Renamed `swizzle_interleaved!` to `swizzle_interleaved_from_slice!`.
- Renamed warnings to notes.
## 2019-12-19 version 0.2.0
The headline feature is that the GIF decoder is now of production quality.
There is now API for overall metadata (e.g. ICCP color profiles) and to
recreate each frame (width, height, BGRA pixels, timing, etc.) of a GIF
animation, instead of version 0.1's proof-of-concept GIF decoder API, which
just gave you a one-dimensional stream of palette indexes. It also now accepts
a variety of GIF images that are invalid, when strictly following the GIF
specifiction, but are nonetheless accepted by other real world GIF
implementations. The Wuffs GIF decoder has also been optimized to be about 1.5x
faster than Wuffs version 0.1 and about 2x faster than giflib (the C library).
The Wuffs GIF decoder is being trialled by Skia, the 2-D graphics library used
by both the Android operating system and the Chromium web browser.
Work also proceeds on the NIE and RAC file formats, but both are still
experimental and may change later in backwards incompatible ways.
The dot points below probably aren't of interest unless you're upgrading from
Wuffs version 0.1.
- Renamed Puffs to Wuffs.
- Ship as a "single file C library"
- Added a `skipgendeps` flag.
- Added a `nullptr` literal and `nptr T` type.
- Added `io_bind` and `io_limit` keywords.
- Added a `use` keyword.
- Added a `yield` keyword.
- Made the `return` value mandatory; added `ok` literal.
- Restricted `var` statements to the top of functions.
- Dropped the `= RHS` out of `var x T = RHS`.
- Changed func out-type from struct to bare type.
- Renamed the implicit `in` variable to `args`.
- Added an implicit `coroutine_resumed` variable.
- Added `std/adler32`, `std/crc32` and `std/gzip`.
- Added `std/gif` quirks.
- Spun `std/lzw` out of `std/gif`.
- Spun `std/zlib` out of `std/flate`.
- Let the `std/gzip` and `std/zlib` decoder ignore checksums.
- Renamed `std/flate` to `std/deflate`.
- Renamed `!=` to `<>`; `!` is now only for impure functions.
- Renamed `~+` to `~mod+`; added `~mod-`, `~sat+` and `~sat-`.
- Removed `&^`.
- Renamed `$(etc)` to `[etc]`.
- Renamed `[i..j]` to `[i ..= j]`, consistent with Rust syntax.
- Renamed `[i:j]` to `[i .. j]`, consistent with Rust syntax.
- Renamed `x T` to `x: T`, consistent with Rust syntax.
- Renamed `[N] T` and `[] T` types to `array[N] T` and `slice T`.
- Renamed `while:label` to `while.label`.
- Renamed `u32`, `buf1`, etc to `base.u32`, `base.io_buffer`, etc.
- Renamed `unread_u8?` to `undo_byte!`; added `can_undo_byte`.
- Renamed some `decode?` methods to `decode_io_writer?`.
- Replaced `= try foo` with `=? foo`.
- Prohibited effect-ful subexpressions.
- Redesigned iterate blocks.
- Added `{frame,image,pixel}_config` and `pixel_buffer` types.
- Added a `reset` method.
- Added `peek_uxx`, `skip_fast` and `write_fast_uxx` methods.
- Renamed some `read_uxx` methods as `read_uxx_as_uyy`.
- Report image metadata such as ICCP and XMP.
- Added I/O positions.
- Tweaked how I/O marks and limits work.
- Tweaked `io_buffer` / `io_reader` distinction in C and Wuffs.
- Added extra fields (uninitialized internal buffers) to structs.
- Supported animated (not just single frame) and interlaced GIFs.
- Marked some internal status codes as private.
- Removed closed-for-read/write built-in status codes.
- Changed the string messages for built-in status codes.
- Changed `error "foo"` to `"#foo"` or `base."#bar"`.
- Added warnings as another status code category.
- Made the status type a `const char *`, not an `int32_t`.
- Disallowed `__double_underscore` prefixed names.
- Added fuzz tests.
- Added `WUFFS_CONFIG__MODULES`.
- Added `WUFFS_CONFIG__STATIC_FUNCTIONS`.
- Added some C++ convenience methods.
- Added some Go and Rust benchmarks.
- Made struct implementations private (opaque pointers).
- Sped up the `mimic_deflate_xxx` benchmarks.
- Fix compile errors under MSVC (Microsoft Visual C/C++).
- Moved the base38 package from `lang/base38` to `lib/base38`.
- Added a stand-alone `lib/interval` package.
- Added NIE file format spec.
- Added RAC file format spec and Go implementation.
## 2017-11-16 version 0.1.0
- [Initial open source
release](https://groups.google.com/d/topic/puffslang/2z61mNTAMns/discussion),
under the "Puffs" name.
---
Updated on January 2020.