ÿØÿà JFIF    ÿÛ „ ( %!1!%*+...983,7(-.- opt/alt/libwebp/share/doc/alt-libwebp/NEWS000064400000037024152351616350014337 0ustar00- 6/30/2025 version 1.6.0 This is a binary compatible release. API changes: - libwebp: WebPValidateDecoderConfig * additional x86 (AVX2, SSE2), general optimizations and compression improvements for lossless * `-mt` returns same results as single-threaded lossless (regressed in 1.5.0, #426506716) * miscellaneous warning, bug & build fixes (#393104377, #397130631, #398288323, #398066379, #427503509) Tool updates: * cwebp can restrict the use of `-resize` with `-resize_mode` (#405437935) - 12/19/2024 version 1.5.0 This is a binary compatible release. API changes: - `cross_color_transform_bits` added to WebPAuxStats * minor lossless encoder speed and compression improvements * lossless encoding does not use floats anymore * additional Arm optimizations for lossy & lossless + general code generation improvements * improvements to WASM performance (#643) * improvements and corrections in webp-container-spec.txt and webp-lossless-bitstream-spec.txt (#646, #355607636) * further security related hardening and increased fuzzing coverage w/fuzztest (oss-fuzz: #382816119, #70112, #70102, #69873, #69825, #69508, #69208) * miscellaneous warning, bug & build fixes (#499, #562, #381372617, #381109771, #42340561, #375011696, #372109644, chromium: #334120888) Tool updates: * gif2webp: add -sharp_yuv & -near_lossless * img2webp: add -exact & -noexact * exit codes normalized; running an example program with no arguments will output its help and exit with an error (#42340557, #381372617) - 4/12/2024: version 1.4.0 This is a binary compatible release. * API changes: - libwebpmux: WebPAnimEncoderSetChunk, WebPAnimEncoderGetChunk, WebPAnimEncoderDeleteChunk - libsharpyuv: SharpYuvOptionsInit, SharpYuvConvertWithOptions - extras: SharpYuvEstimate420Risk * further security related hardening in libwebp & examples * some minor optimizations in the lossless encoder * added WEBP_NODISCARD to report unused result warnings; enable with -DWEBP_ENABLE_NODISCARD=1 * improvements and corrections in webp-container-spec.txt and webp-lossless-bitstream-spec.txt (#611) * miscellaneous warning, bug & build fixes (#615, #619, #632, #635) - 9/13/2023: version 1.3.2 This is a binary compatible release. * security fix for lossless decoder (chromium: #1479274, CVE-2023-4863) - 6/23/2023: version 1.3.1 This is a binary compatible release. * security fixes for lossless encoder (#603, chromium: #1420107, #1455619, CVE-2023-1999) * improve error reporting through WebPPicture error codes * fix upsampling for RGB565 and RGBA4444 in NEON builds * img2webp: add -sharp_yuv & -near_lossless * Windows builds: - fix compatibility with clang-cl (#607) - improve Arm64 performance with cl.exe - add Arm64EC support * fix webp_js with emcc >= 3.1.27 (stack size change, #614) * CMake fixes (#592, #610, #612) * further updates to the container and lossless bitstream docs (#581, #611) - 12/16/2022: version 1.3.0 This is a binary compatible release. * add libsharpyuv, which exposes -sharp_yuv/config.use_sharp_yuv functionality to other libraries; libwebp now depends on this library * major updates to the container and lossless bitstream docs (#448, #546, #551) * miscellaneous warning, bug & build fixes (#576, #583, #584) - 8/4/2022: version 1.2.4 This is a binary compatible release. * restore CMake libwebpmux target name for compatibility with 1.2.2 (#575) * fix lossless crunch mode encoding with WEBP_REDUCE_SIZE (chromium: #1345547, #1345595, #1345772, #1345804) - 6/30/2022: version 1.2.3 This is a binary compatible release. * security fix for lossless encoder (#565, chromium:1313709) * improved progress granularity in WebPReportProgress() when using lossless * improved precision in Sharp YUV (-sharp_yuv) conversion * many corrections to webp-lossless-bitstream-spec.txt (#551) * crash/leak fixes on error/OOM and other bug fixes (#558, #563, #569, #573) - 1/11/2022: version 1.2.2 This is a binary compatible release. * webpmux: add "-set bgcolor A,R,G,B" * add ARM64 NEON support for MSVC builds (#539) * fix duplicate include error in Xcode when using multiple XCFrameworks in a project (#542) * doc updates and bug fixes (#538, #544, #548, #550) - 7/20/2021: version 1.2.1 This is a binary compatible release. * minor lossless encoder improvements and x86 color conversion speed up * add ARM64 simulator support to xcframeworkbuild.sh (#510) * further security related hardening in libwebp & examples (issues: #497, #508, #518) (chromium: #1196480, #1196773, #1196775, #1196777, #1196778, #1196850) (oss-fuzz: #28658, #28978) * toolchain updates and bug fixes (#498, #501, #502, #504, #505, #506, #509, #533) * use more inclusive language within the source (#507) - 12/23/2020: version 1.2.0 * API changes: - libwebp: encode.h: add a qmin / qmax range for quality factor (cwebp adds -qrange) * lossless encoder improvements * SIMD support for Wasm builds * add xcframeworkbuild.sh, supports Mac Catalyst builds * import fuzzers from oss-fuzz & chromium (#409) * webpmux: add an '-set loop ' option (#494) * toolchain updates and bug fixes (#449, #463, #470, #475, #477, #478, #479, #488, #491) - 12/18/2019: version 1.1.0 * API changes: - libwebp: WebPMalloc (issue #442) - extras: WebPUnmultiplyARGB * alpha decode fix (issue #439) * toolchain updates and bug fixes (chromium: #1026858, #1027136, #1027409, #1028620, #1028716, #995200) (oss-fuzz: #19430, #19447) - 7/4/2019: version 1.0.3 This is a binary compatible release. * resize fixes for Nx1 sizes and the addition of non-opaque alpha values for odd sizes (issues #418, #434) * lossless encode/decode performance improvements * lossy compression performance improvement at low quality levels with flat content (issue #432) * python swig files updated to support python 3 Tool updates: vwebp will now preserve the aspect ratio of images that exceed monitor resolution by scaling the image to fit (issue #433) - 1/14/2019: version 1.0.2 This is a binary compatible release. * (Windows) unicode file support in the tools (linux and mac already had support, issue #398) * lossless encoder speedups * lossy encoder speedup on ARM * lossless multi-threaded security fix (chromium:917029) - 11/2/2018: version 1.0.1 This is a binary compatible release. * lossless encoder speedups * big-endian fix for alpha decoding (issue #393) * gif2webp fix for loop count=65535 transcode (issue #382) * further security related hardening in libwebp & libwebpmux (issues #383, #385, #386, #387, #388, #391) (oss-fuzz #9099, #9100, #9105, #9106, #9111, #9112, #9119, #9123, #9170, #9178, #9179, #9183, #9186, #9191, #9364, #9417, #9496, #10349, #10423, #10634, #10700, #10838, #10922, #11021, #11088, #11152) * miscellaneous bug & build fixes (issues #381, #394, #396, #397, #400) - 4/2/2018: version 1.0.0 This is a binary compatible release. * lossy encoder improvements to avoid chroma shifts in various circumstances (issues #308, #340) * big-endian fixes for decode, RGBA import and WebPPictureDistortion Tool updates: gifwebp, anim_diff - default duration behavior (<= 10ms) changed to match web browsers, transcoding tools (issue #379) img2webp, webpmux - allow options to be passed in via a file (issue #355) - 11/24/2017: version 0.6.1 This is a binary compatible release. * lossless performance and compression improvements + a new 'cruncher' mode (-m 6 -q 100) * ARM performance improvements with clang (15-20% w/ndk r15c, issue #339) * webp-js: emscripten/webassembly based javascript decoder * miscellaneous bug & build fixes (issue #329, #332, #343, #353, #360, #361, #363) Tool updates / additions: added webpinfo - prints file format information (issue #330) gif2webp - loop behavior modified to match Chrome M63+ (crbug.com/649264); '-loop_compatibility' can be used for the old behavior - 1/26/2017: version 0.6.0 * lossless performance and compression improvements * miscellaneous performance improvements (SSE2, NEON, MSA) * webpmux gained a -duration option allowing for frame timing modification * new img2webp utility allowing a sequence of images to be converted to animated webp * API changes: - libwebp: WebPPictureSharpARGBToYUVA WebPPlaneDistortion - libwebpmux / gif2webp: WebPAnimEncoderOptions: kmax <= 0 now disables keyframes, kmax == 1 forces all keyframes. See mux.h and the gif2webp manpage for details. - 12/13/2016: version 0.5.2 This is a binary compatible release. This release covers CVE-2016-8888 and CVE-2016-9085. * further security related hardening in the tools; fixes to gif2webp/AnimEncoder (issues #310, #314, #316, #322), cwebp/libwebp (issue #312) * full libwebp (encoder & decoder) iOS framework; libwebpdecoder WebP.framework renamed to WebPDecoder.framework (issue #307) * CMake support for Android Studio (2.2) * miscellaneous build related fixes (issue #306, #313) * miscellaneous documentation improvements (issue #225) * minor lossy encoder fixes and improvements - 6/14/2016: version 0.5.1 This is a binary compatible release. * miscellaneous bug fixes (issues #280, #289) * reverted alpha plane encoding with color cache for compatibility with libwebp 0.4.0->0.4.3 (issues #291, #298) * lossless encoding performance improvements * memory reduction in both lossless encoding and decoding * force mux output to be in the extended format (VP8X) when undefined chunks are present (issue #294) * gradle, cmake build support * workaround for compiler bug causing 64-bit decode failures on android devices using clang-3.8 in the r11c NDK * various WebPAnimEncoder improvements - 12/17/2015: version 0.5.0 * miscellaneous bug & build fixes (issues #234, #258, #274, #275, #278) * encoder & decoder speed-ups on x86/ARM/MIPS for lossy & lossless - note! YUV->RGB conversion was sped-up, but the results will be slightly different from previous releases * various lossless encoder improvements * gif2webp improvements, -min_size option added * tools fully support input from stdin and output to stdout (issue #168) * New WebPAnimEncoder API for creating animations * New WebPAnimDecoder API for decoding animations * other API changes: - libwebp: WebPPictureSmartARGBToYUVA() (-pre 4 in cwebp) WebPConfig::exact (-exact in cwebp; -alpha_cleanup is now the default) WebPConfig::near_lossless (-near_lossless in cwebp) WebPFree() (free'ing webp allocated memory in other languages) WebPConfigLosslessPreset() WebPMemoryWriterClear() - libwebpdemux: removed experimental fragment related fields and functions - libwebpmux: WebPMuxSetCanvasSize() * new libwebpextras library with some uncommon import functions: WebPImportGray/WebPImportRGB565/WebPImportRGB4444 - 10/15/15: version 0.4.4 This is a binary compatible release. * rescaling out-of-bounds read fix (issue #254) * various build fixes and improvements (issues #253, #259, #262, #267, #268) * container documentation update * gif2webp transparency fix (issue #245) - 3/3/15: version 0.4.3 This is a binary compatible release. * Android / gcc / iOS / MSVS build fixes and improvements * lossless decode fix (issue #239 -- since 0.4.0) * documentation / vwebp updates for animation * multi-threading fix (issue #234) - 10/13/14: version 0.4.2 This is a binary compatible release. * Android / gcc build fixes * (Windows) fix reading from stdin and writing to stdout * gif2webp: miscellaneous fixes * fix 'alpha-leak' with lossy compression (issue #220) * the lossless bitstream spec has been amended to reflect the current code - 7/24/14: version 0.4.1 This is a binary compatible release. * AArch64 (arm64) & MIPS support/optimizations * NEON assembly additions: - ~25% faster lossy decode / encode (-m 4) - ~10% faster lossless decode - ~5-10% faster lossless encode (-m 3/4) * dwebp/vwebp can read from stdin * cwebp/gif2webp can write to stdout * cwebp can read webp files; useful if storing sources as webp lossless - 12/19/13: version 0.4.0 * improved gif2webp tool * numerous fixes, compression improvement and speed-up * dither option added to decoder (dwebp -dither 50 ...) * improved multi-threaded modes (-mt option) * improved filtering strength determination * New function: WebPMuxGetCanvasSize * BMP and TIFF format output added to 'dwebp' * Significant memory reduction for decoding lossy images with alpha. * Intertwined decoding of RGB and alpha for a shorter time-to-first-decoded-pixel. * WebPIterator has a new member 'has_alpha' denoting whether the frame contains transparency. * Container spec amended with new 'blending method' for animation. - 6/13/13: version 0.3.1 This is a binary compatible release. * Add incremental decoding support for images containing ALPH and ICCP chunks. * Python bindings via swig for the simple encode/decode interfaces similar to Java. - 3/20/13: version 0.3.0 This is a binary compatible release. * WebPINewRGB/WebPINewYUVA accept being passed a NULL output buffer and will perform auto-allocation. * default filter option is now '-strong -f 60' * encoding speed-up for lossy methods 3 to 6 * alpha encoding can be done in parallel to lossy using 'cwebp -mt ...' * color profile, metadata (XMP/EXIF) and animation support finalized in the container. * various NEON assembly additions Tool updates / additions: * gif2webp added * vwebp given color profile & animation support * cwebp can preserve color profile / metadata with '-metadata' - 10/30/12: version 0.2.1 * Various security related fixes * cwebp.exe: fix import errors on Windows XP * enable DLL builds for mingw targets - 8/3/12: version 0.2.0 * Add support for ARGB -> YUVA conversion for lossless decoder New functions: WebPINewYUVA, WebPIDecGetYUVA * Add stats for lossless and alpha encoding * Security related hardening: allocation and size checks * Add PAM output support to dwebp - 7/19/12: version 0.1.99 * This is a pre-release of 0.2.0, not an rc to allow for further incompatible changes based on user feedback. * Alpha channel encode/decode support. * Lossless encoder/decoder. * Add TIFF input support to cwebp. Incompatible changes: * The encode ABI has been modified to support alpha encoding. * Deprecated function WebPINew() has been removed. * Decode function signatures have changed to consistently use size_t over int/uint32_t. * decode_vp8.h is no longer installed system-wide. * cwebp will encode the alpha channel if present. - 9/19/11: version 0.1.3 * Advanced decoding APIs. * On-the-fly cropping and rescaling of images. * SSE2 instructions for decoding performance optimizations on x86 based platforms. * Support Multi-threaded decoding. * 40% improvement in Decoding performance. * Add support for RGB565, RGBA4444 & ARGB image colorspace. * Better handling of large picture encoding. - 3/25/11: version 0.1.2 * Incremental decoding: picture can be decoded byte-by-byte if needs be. * lot of bug-fixes, consolidation and stabilization - 2/23/11: initial release of version 0.1, with the new encoder - 9/30/10: initial release version with only the lightweight decoder opt/alt/ruby18/share/doc/alt-ruby18/NEWS000064400000033256152352505770013562 0ustar00= NEWS This document is a list of user visible feature changes made between releases except for bug fixes. Note that each entry is kept so brief that no reason behind or reference information is supplied with. For a full list of changes with all sufficient information, see the ChangeLog file. * REXML * REXML::Document.entity_expansion_limit= New method to set the entity expansion limit. By default the limit is set to 10000. See the following URL for details. http://www.ruby-lang.org/en/news/2008/08/23/dos-vulnerability-in-rexml/ == Changes since the 1.8.6 release === Configuration changes * vendor_ruby directory A new library directory named `vendor_ruby' is introduced in addition to `site_ruby'. The idea is to separate libraries installed by the package system (`vendor') from manually (`site') installed libraries preventing the former from getting overwritten by the latter, while preserving the user option to override vendor libraries with site libraries. (`site_ruby' takes precedence over `vendor_ruby') If you are a package maintainer, make each library package configure the library passing the `--vendor' option to `extconf.rb' so that the library files will get installed under `vendor_ruby'. You can change the directory locations using configure options such as `--with-sitedir=DIR' and `--with-vendordir=DIR'. === Global constants * new constants * RUBY_COPYRIGHT * RUBY_DESCRIPTION === Library updates (outstanding ones only) * new library * securerandom * builtin classes * Array#flatten * Array#flatten! Takes an optional argument that determines the level of recursion to flatten. * Array#eql? * Array#hash * Array#== * Array#<=> Handle recursive data properly. * Array#index * Array#rindex Take a block instead of an argument. * Array#collect! * Array#map! * Array#each * Array#each_index * Array#reverse_each * Array#reject * Array#reject! * Array#delete_if * Array#select Return an enumerator if no block is given. Note that #map and #collect still return an array unlike Ruby 1.9 to keep compatibility. * Array#pop * Array#shift Take an optional argument specifying the number of elements to remove. * Array#choice * Array#combination * Array#cycle * Array#drop * Array#drop_while * Array#permutation * Array#product * Array#shuffle * Array#shuffle! * Array#take, * Array#take_while New methods. * Binding#eval New method. * Dir#each * Dir#foreach Return an enumerator if no block is given. * Enumerable::Enumerator New class for various enumeration defined by the enumerator library. * Enumerable#each_slice * Enumerable#each_cons * Object#to_enum * Object#enum_for New methods for various enumeration defined by the enumerator library. * Enumerable#count * Enumerable#cycle * Enumerable#drop * Enumerable#drop_while * Enumerable#find_index * Enumerable#first * Enumerable#group_by * Enumerable#max_by * Enumerable#min_by * Enumerable#minmax * Enumerable#minmax_by * Enumerable#none? * Enumerable#one? * Enumerable#take * Enumerable#take_while New methods. * Enumerable#find * Enumerable#find_all * Enumerable#partition * Enumerable#reject * Enumerable#select * Enumerable#sort_by Return an enumerator if no block is given. Note that #map and #collect still return an array unlike Ruby 1.9 to keep compatibility. * Enumerable#inject Accepts a binary operator instead of a block. * Enumerable#reduce New alias to #inject. * Enumerable#to_a Can take optional arguments and pass them to #each. * Hash#eql? * Hash#hash * Hash#== Handle recursive data properly. * Hash#delete_if * Hash#each * Hash#each_key * Hash#each_pair * Hash#each_value * Hash#reject! * Hash#select * ENV.delete_if * ENV.each * ENV.each_key * ENV.each_pair * ENV.each_value * ENV.reject! * ENV.select Return an enumerator if no block is given. * GC.stress * GC.stress= New methods. * Integer#ord * Integer#odd? * Integer#even? * Integer#pred New methods. * Integer#downto * Integer#times * Integer#upto Return an enumerator if no block is given. * IO#each * IO#each_line * IO#each_byte * IO.foreach * ARGF.each * ARGF.each_line * ARGF.each_byte Return an enumerator if no block is given. * IO#bytes * IO#chars * IO#each_char * IO#getbyte * IO#lines * IO#readbyte * ARGF.bytes * ARGF.chars * ARGF.each_char * ARGF.getbyte * ARGF.lines * ARGF.readbyte New methods. * Method#name * Method#owner * Method#receiver * UnboundMethod#name * UnboundMethod#owner New methods. * Module#class_exec * Module#module_exec New methods. * Numeric#step Return an enumerator if no block is given. * Object#instance_exec * Object#tap New methods. * ObjectSpace.each_object Return an enumerator if no block is given. * Process.exec implemented. * Range#each * Range#step Return an enumerator if no block is given. * Regexp.union accepts an array of patterns. * String#bytes New method * String#bytesize New method, returning the size in bytes. (alias length and size) * String#chars * String#each_char * String#lines * String#partition * String#rpartition * String#start_with? * String#end_with? New methods. These are $KCODE aware unlike #index, #rindex and #include?. * String#each_byte * String#each * String#each_line * String#gsub(pattern) Return an enumerator if no block is given. * String#upto An optional second argument is added to specify if the last value should be included. * StopIteration New exception class that causes Kernel#loop to stop iteration when raised. * Struct#each * Struct#each_pair Return an enumerator if no block is given. * Symbol#to_proc New method. * __method__ New global function that returns the name of the current method as a Symbol. * enumerator * Enumerator is now a built-in module. The #next and #rewind methods are implemented using the "generator" library. Use with care and be aware of the performance loss. * ipaddr * New methods * IPAddr#<=> * IPAddr#succ IPAddr objects are now comparable and enumerable having these methods. This also means that it is possible to have a Range object between two IPAddr objects. * IPAddr#to_range A new method to create a Range object for the (network) address. * Type coercion support * IPAddr#& * IPAddr#| * IPAddr#== * IPAddr#include? These methods now accept a string or an integer instead of an IPAddr object as the argument. * net/smtp * Support SSL/TLS. * openssl * New classes * OpenSSL::PKey::EC * OpenSSL::PKey::EC::Group * OpenSSL::PKey::EC::Point * OpenSSL::PKey::PKCS5 * OpenSSL::SSL::Session * Documentation! * Various new methods (see documentation). * Remove redundant module namespace in Cipher, Digest, PKCS7, PKCS12. Compatibility classes are provided which will be removed in Ruby 1.9. * shellwords * Add methods for escaping shell-unsafe characters: * Shellwords.join * Shellwords.escape * Array#shelljoin * String#shellescape * Add shorthand methods: * Shellwords.split (alias shellwords) * String#shellsplit * stringio * StringIO#getbyte * StringIO#readbyte New methods. (aliases for compatibility with 1.9) * StringIO#each_char * StringIO#chars New methods. * StringIO#each * StringIO#each_line * StringIO#each_byte Return an enumerator if no block is given. * tempfile * Tempfile.open and Tempfile.new now accept a suffix for the temporary file to be created. To specify a suffix, pass an array of [basename, suffix] as the first argument. Tempfile.open(['image', 'jpg']) { |tempfile| ... } * tmpdir * New method: * Dir.mktmpdir * uri * added LDAPS scheme. * Change for RFC3986: * FTP * URI('ftp://example.com/foo').path #=> 'foo' * URI('ftp://example.com/%2Ffoo').path #=> '/foo' * URI::FTP.build([nil, 'example.com', nil, '/foo', 'i').to_s #=> 'ftp://example.com/%2Ffoo;type=i' * URI merge * URI('http://a/b/c/d;p?q').merge('?y') == URI('http://a/b/c/d;p?y') * URI('http://a/b/c/d;p?q').merge('/./g') == URI('http://a/g') * URI('http://a/b/c/d;p?q').merge('/../g') == URI('http://a/g') * URI('http://a/b/c/d;p?q').merge('../../../g') == URI('http://a/g') * URI('http://a/b/c/d;p?q').merge('../../../../g') == URI('http://a/g') * rss * 0.1.6 -> 0.2.4 * Fix image module URI * Atom support * ITunes module support * Slash module support * content:encoded with RSS 2.0 support === Interpreter Implementation * passing a block to a Proc [experimental] This implementation in current shape is known to be buggy/broken, especially with nested block invocation. Take this as an experimental feature. * stack trace On non-SystemStackError exception, full stack trace is shown. === Compatibility issues (excluding feature bug fixes) * String#slice! had some unintentional bugs and they have been fixed because either they disagreed with documentation or their respective behavior of #slice. Unfortunately, this causes some incompatibilities in the following (somewhat rare) cases. * #slice! no longer expands the array when an out-of-boundary value is given. # Ruby 1.8.6 a = [1,2] a.slice!(4,0) #=> nil a #=> [1,2,nil,nil] # Ruby 1.8.7 a = [1,2] a.slice!(4,0) #=> nil a #=> [1,2] * #slice! no longer raises an exception but returns nil when a negative length or out-of-boundary negative position is given. # Ruby 1.8.6 a = [1,2] a.slice!(1,-1) #=> (raises IndexError) a.slice!(-5,1) #=> (raises IndexError) # Ruby 1.8.7 a = [1,2] a.slice!(1,-1) #=> nil a.slice!(-5,1) #=> nil * String#to_i, String#hex and String#oct no longer accept a sequence of underscores (`__') as part of a number. # Ruby 1.8.6 '1__0'.to_i #=> 10 '1__0'.to_i(2) #=> 2 # 0b10 '1__0'.oct #=> 8 # 010 '1__0'.hex #=> 16 # 0x10 # Ruby 1.8.7 '1__0'.to_i #=> 1 '1__0'.to_i(2) #=> 1 '1__0'.oct #=> 1 '1__0'.hex #=> 1 The old behavior was inconsistent with Ruby syntax and considered as a bug. * date * Date.parse '##.##.##' (where each '#' is a digit) is now taken as 'YY.MM.DD' instead of 'MM.DD.YY'. While the change may confuse you, you can always use Date.strptime() when you know what you are dealing with. * stringio * StringIO#each_byte The return value changed from nil to self. This is what the document says and the same as each_line() does. * tempfile * The file name format has changed. No dots are included by default in temporary file names any more. See above for how to specify a suffix. * uri * See above for details. == Changes since the 1.8.5 release === New platforms/build tools support * IA64 HP-UX * Visual C++ 8 SP1 * autoconf 2.6x === Global constants * RUBY_PATCHLEVEL New constant since 1.8.5-p1. === Library updates (outstanding ones only) * builtin classes * New method: Kernel#instance_variable_defined? * New method: Module#class_variable_defined? * New feature: Dir::glob() can now take an array of glob patterns. * date * Updated based on date2 4.0.3. * digest * New internal APIs for C and Ruby. * Support for autoloading. require 'digest' # autoloads digest/md5 md = Digest::MD5.digest("string") * New digest class methods: file * New digest instance methods: clone, reset, new, inspect, digest_length (alias size or length), block_length() * New library: digest/bubblebabble * New function: Digest(name) * fileutils * New option for FileUtils.cp_r(): :remove_destination * nkf * Updated based on nkf as of 2007-01-28. * thread * Replaced with much faster mutex implementation in C. The former implementation, which is slow but considered to be stable, is available with a configure option `--disable-fastthread'. * tk * Updated Tile extension support based on Tile 0.7.8. * Support --without-X11 configure option for non-X11 versions of Tcl/Tk (e.g. Tcl/Tk Aqua). * New sample script: irbtkw.rbw -- IRB on Ruby/Tk. It has no trouble about STDIN blocking on Windows. * webrick * New method: WEBrick::Cookie.parse_set_cookies() === Compatibility issues (excluding feature bug fixes) * builtin classes * String#intern now raises SecurityError when $SAFE level is greater than zero. * date * Time#to_date and Time#to_datetime are added as private methods. They cause name conflict error in ActiveSupport 1.4.1 and prior, which comes with Rails 1.2.2 and prior. Updating ActiveSupport and/or Rails to the latest versions fixes the problem. * digest * The constructor does no longer take an initial string to feed. The following examples show how to migrate: # Before md = Digest::MD5.new("string") # After (works with any version) md = Digest::MD5.new.update("string") # Before hd = Digest::MD5.new("string").hexdigest # After (works with any version) hd = Digest::MD5.hexdigest("string") * fileutils * A minor implementation change breaks Rake <=0.7.1. Updating Rake to 0.7.2 or higher fixes the problem. * tk * Tk::X_Scrollable (Y_Scrollable) is renamed to Tk::XScrollable (YScrollable). Tk::X_Scrollable (Y_Scrollable) is still available, but it is an alias name.