1# Changelog 2 3 4## Work In Progress 5 6- Renamed Puffs to Wuffs. 7- Ship as a "single file C library" 8- Added a `skipgendeps` flag. 9- Added a `nullptr` literal and `nptr T` type. 10- Added `io_bind` and `io_limit` keywords. 11- Added a `use` keyword. 12- Added a `yield` keyword. 13- Made the `return` value mandatory; added `ok` literal. 14- Restricted `var` statements to the top of functions. 15- Dropped the `= RHS` out of `var x T = RHS`. 16- Changed func out-type from struct to bare type. 17- Renamed the implicit `in` variable to `args`. 18- Added an implicit `coroutine_resumed` variable. 19- Added `std/adler32`, `std/crc32` and `std/gzip`. 20- Spun `std/lzw` out of `std/gif`. 21- Spun `std/zlib` out of `std/flate`. 22- Let the `std/zlib` decoder ignore checksums. 23- Renamed `std/flate` to `std/deflate`. 24- Renamed `!=` to `<>`; `!` is now only for impure functions. 25- Renamed `~+` to `~mod+`; added `~mod-`, `~sat+` and `~sat-`. 26- Removed `&^`. 27- Renamed `$(etc)` to `[etc]`. 28- Renamed `[N] T` and `[] T` types to `array[N] T` and `slice T`. 29- Renamed `buf1`, `reader1`, etc to `io_buffer`, `io_reader`, etc. 30- Renamed `u32`, `io_reader`, etc to `base.u32`, `base.io_reader`, etc. 31- Renamed `unread_u8?` to `undo_byte!`; added `can_undo_byte`. 32- Renamed some `decode?` methods to `decode_io_writer?`. 33- Replaced `= try foo` with `=? foo`. 34- Prohibited effect-ful subexpressions. 35- Redesigned iterate blocks. 36- Added `{frame,image,pixel}_config` and `pixel_buffer` types. 37- Added a `reset` method. 38- Added `peek_uxx`, `skip_fast` and `write_fast_uxx` methods. 39- Renamed some `read_uxx` methods as `read_uxx_as_uyy`. 40- Report image metadata such as ICCP and XMP. 41- Added I/O positions. 42- Added extra fields (uninitialized internal buffers) to structs. 43- Tweaked how marks and limits work. 44- Supported animated (not just single frame) and interlaced GIFs. 45- Marked some internal status codes as private. 46- Removed closed-for-read/write built-in status codes. 47- Changed the string messages for built-in status codes. 48- Changed `error "foo"` to `"#foo"` or `base."#bar"`. 49- Added warnings as another status code category. 50- Made the status type a `const char *`, not an `int32_t`. 51- Disallowed `__double_underscore` prefixed names. 52- Moved the base38 package from `lang/base38` to `lib/base38`. 53- Added a stand-alone `lib/interval` package. 54- Added fuzz tests. 55- Added `WUFFS_CONFIG__MODULES`. 56- Added `WUFFS_CONFIG__STATIC_FUNCTIONS`. 57- Added some C++ convenience methods. 58- Added some Go and Rust benchmarks. 59- Made struct implementations private (opaque pointers). 60- Sped up the `mimic_deflate_xxx` benchmarks. 61 62 63## 2017-11-16 64 65- [Initial open source 66 release](https://groups.google.com/d/topic/puffslang/2z61mNTAMns/discussion), 67 under the "Puffs" name. 68 69 70--- 71 72Updated on April 2019. 73