0b
prefixed binary numbers.WUFFS_BASE__PIXEL_BLEND__SRC_OVER
.WUFFS_BASE__PIXEL_FORMAT__BGR_565
.WUFFS_CONFIG__MODULE__BASE__ETC
sub-modules.auxiliary
code.base
library support for UTF-8.base
library support for atoi
-like string conversion.choose
and choosy
.cpu_arch
.doc/logo
.endwhile
syntax.example/cbor-to-json
.example/convert-to-nia
.example/imageviewer
.example/json-to-cbor
.example/jsonfindptrs
.example/jsonptr
.example/sdl-imageviewer
.slice base.u8 peek/poke
methods.std/bmp
.std/cbor
.std/json
.std/nie
.std/png
.std/wbmp
.tell_me_more?
mechanism.uintptr_low_12_bits
method.gif.decoder_workbuf_len_max_incl_worst_case
from 1 to 0.clang-5.0,gcc
to clang,gcc
.-cformatter
flag.std/gif
benchmarks actually measure.wuffs_base__pixel_format
a struct.wuffs_base__pixel_subsampling
a struct.wuffs_base__status
a struct.ack_metadata_chunk?
.wuffs_base__frame_config__blend
.available
methods to length
.decode_io_writer?
methods to transform_io?
.example/library
to example/toy-genlib
.load
and store
to peek
and poke
.{read,writ}er_io_position
to {read,writ}er_position
.set_ignore_checksum!
as a quirk.swizzle_interleaved!
to swizzle_interleaved_from_slice!
.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.
skipgendeps
flag.nullptr
literal and nptr T
type.io_bind
and io_limit
keywords.use
keyword.yield
keyword.return
value mandatory; added ok
literal.var
statements to the top of functions.= RHS
out of var x T = RHS
.in
variable to args
.coroutine_resumed
variable.std/adler32
, std/crc32
and std/gzip
.std/gif
quirks.std/lzw
out of std/gif
.std/zlib
out of std/flate
.std/gzip
and std/zlib
decoder ignore checksums.std/flate
to std/deflate
.!=
to <>
; !
is now only for impure functions.~+
to ~mod+
; added ~mod-
, ~sat+
and ~sat-
.&^
.$(etc)
to [etc]
.[i..j]
to [i ..= j]
, consistent with Rust syntax.[i:j]
to [i .. j]
, consistent with Rust syntax.x T
to x: T
, consistent with Rust syntax.[N] T
and [] T
types to array[N] T
and slice T
.while:label
to while.label
.u32
, buf1
, etc to base.u32
, base.io_buffer
, etc.unread_u8?
to undo_byte!
; added can_undo_byte
.decode?
methods to decode_io_writer?
.= try foo
with =? foo
.{frame,image,pixel}_config
and pixel_buffer
types.reset
method.peek_uxx
, skip_fast
and write_fast_uxx
methods.read_uxx
methods as read_uxx_as_uyy
.io_buffer
/ io_reader
distinction in C and Wuffs.error "foo"
to "#foo"
or base."#bar"
.const char *
, not an int32_t
.__double_underscore
prefixed names.WUFFS_CONFIG__MODULES
.WUFFS_CONFIG__STATIC_FUNCTIONS
.mimic_deflate_xxx
benchmarks.lang/base38
to lib/base38
.lib/interval
package.Updated on January 2020.