~ubuntu-branches/ubuntu/quantal/ruby1.9.1/quantal

« back to all changes in this revision

Viewing changes to NEWS

  • Committer: Bazaar Package Importer
  • Author(s): Lucas Nussbaum
  • Date: 2011-09-24 19:16:17 UTC
  • mfrom: (1.1.8 upstream) (13.1.7 experimental)
  • Revision ID: james.westby@ubuntu.com-20110924191617-o1qz4rcmqjot8zuy
Tags: 1.9.3~rc1-1
* New upstream release: 1.9.3 RC1.
  + Includes load.c fixes. Closes: #639959.
* Upload to unstable.

Show diffs side-by-side

added added

removed removed

Lines of Context:
8
8
reference information is supplied with.  For a full list of changes
9
9
with all sufficient information, see the ChangeLog file.
10
10
 
11
 
== Changes since the 1.9.1 release
 
11
== Changes since the 1.9.2 release
 
12
=== License
 
13
 
 
14
* Ruby's License is changed from a dual license with GPLv2
 
15
  to a dual license with 2-clause BSDL.
 
16
 
 
17
=== Known platform dependent issues
 
18
==== OS X Lion
 
19
 
 
20
* You have to configure ruby with '--with-gcc=gcc-4.2' if you're using
 
21
  Xcode 4.1, or, if you're using Xcode 4.2, you have to configure ruby
 
22
  with '--with-gcc=clang'.
 
23
 
 
24
=== C API updates
 
25
 
 
26
* rb_scan_args() is enhanced with support for option hash argument
 
27
  extraction.
 
28
 
 
29
* ruby_vm_at_exit() added.  This enables extension libs to hook a VM
 
30
  termination.
 
31
 
 
32
* rb_reserved_fd_p() added.  If you want to close all file descriptors,
 
33
  check using this API.  [ruby-core:37759]
 
34
 
12
35
=== Library updates (outstanding ones only)
13
36
 
14
37
* builtin classes
15
38
 
 
39
  * ARGF
 
40
    * new methods:
 
41
      * ARGF.print
 
42
      * ARGF.printf
 
43
      * ARGF.putc
 
44
      * ARGF.puts
 
45
      * ARGF.read_nonblock
 
46
      * ARGF.to_write_io
 
47
      * ARGF.write
 
48
 
16
49
  * Array
17
 
    * new method:
18
 
      * Array#keep_if
19
 
      * Array#repeated_combination
20
 
      * Array#repeated_permutation
21
 
      * Array#rotate
22
 
      * Array#rotate!
23
 
      * Array#select!
24
 
      * Array#sort_by!
25
 
 
26
 
    * extended methods:
27
 
      * Array#{uniq,uniq!,product} can take a block.
28
 
 
29
 
  * Complex
30
 
    * new methods:
31
 
      * Complex#rationalize
32
 
 
33
 
  * Dir
34
 
    * new method:
35
 
      * Dir.home
 
50
    * extended method:
 
51
      * Array#pack supports endian modifiers
 
52
 
 
53
  * Bignum
 
54
    * Multiplication algorithm for Bignums with a large number of digits over
 
55
      150 BDIGITs is changed in order to reduce its calculation time.
 
56
      Now such large Bignums are multiplied by using Toom-3 algorithm.
36
57
 
37
58
  * Encoding
38
59
    * new encodings:
39
 
      * Big5
40
 
      * Big5-UAO
41
 
      * ISO-2022-JP-KDDI
42
 
      * SJIS-DoCoMo
43
 
      * SJIS-KDDI
44
 
      * SJIS-SoftBank
45
 
      * UTF8-DoCoMo
46
 
      * UTF8-KDDI
47
 
      * UTF8-SoftBank
48
 
 
49
 
    * new method:
50
 
      * ascii_compatible?
51
 
 
52
 
  * Enumerable
53
 
    * New methods:
54
 
      * Enumerable#chunk
55
 
      * Enumerable#collect_concat
56
 
      * Enumerable#each_entry
57
 
      * Enumerable#flat_map
58
 
      * Enumerable#slice_before
59
 
 
60
 
  * Enumerator
61
 
    * new methods:
62
 
      * Enumerator#peek
63
 
      * Enumerator#next_values
64
 
      * Enumerator#peek_values
65
 
      * Enumerator#feed
66
 
      * StopIteration#result
67
 
 
68
 
    * extended methods:
69
 
      * #with_index accepts an optional argument that specifies the
70
 
        index number to start with, defaulted to 0.
71
 
 
72
 
    * incompatible changes:
73
 
      * #rewind now calls the "rewind" method of the enclosed object
74
 
        if defined.
75
 
      * #next doesn't clear the position at end.
76
 
 
77
 
  * ENV
78
 
    * Uses locale's encoding
79
 
    * ENV.[]= raises Errno::{EINVAL,ENOMEM} etc. on failure.
80
 
    * new methods:
81
 
      * ENV.keep_if
82
 
      * ENV.select!
83
 
 
84
 
  * Float
85
 
    * new constants:
86
 
      * Float::INFINITY
87
 
      * Float::NAN
88
 
    * new methods:
89
 
      * Float#rationalize
 
60
      * CP950
 
61
      * CP951
 
62
      * UTF-16
 
63
      * UTF-32
 
64
    * change alias:
 
65
      * SJIS is Windows-31J
90
66
 
91
67
  * File
92
 
    * new methods:
93
 
      * File.realpath
94
 
      * File.realdirpath
95
 
 
96
 
  * GC::Profiler
97
 
    * new method:
98
 
      * GC::Profiler.total_time
99
 
 
100
 
  * Hash
101
 
    * new methods:
102
 
      * Hash#keep_if
103
 
      * Hash#select!
 
68
    * new constant:
 
69
      * File::NULL
 
70
        name of NULL device.
 
71
      * File::DIRECT
 
72
        name of O_DIRECT.
104
73
 
105
74
  * IO
106
 
    * new method:
107
 
      * IO#autoclose=
108
 
      * IO#autoclose?
109
 
      * IO#fdatasync
110
 
      * IO#codepoints
111
 
      * IO#each_codepoint
112
 
 
113
 
    * extended methods:
114
 
      * IO.pipe can take a block.
115
 
 
116
 
    * new modules:
117
 
      * IO::WaitReadable
118
 
      * IO::WaitWritable
119
 
        They are used to extend non-blocking exceptions.
120
 
 
121
 
  * Integer
 
75
    * extended method:
 
76
      * IO#putc supports multibyte characters
122
77
    * new methods:
123
 
      * Integer#rationalize
 
78
      * IO#advise
 
79
      * IO.write(name, string, [offset] )
 
80
        Write `string` to file `name`.
 
81
        Opposite with File.read.
 
82
      * IO.binwrite(name, string, [offset] )
 
83
        binary version of IO.write.
124
84
 
125
85
  * Kernel
126
 
    * new methods:
127
 
      * Kernel#respond_to_missing?
128
 
      * Kernel#singleton_class
129
 
      * Kernel#require_relative
130
 
 
131
 
    * extended methods:
132
 
      * Kernel#respond_to? can be used to detect methods not implemented.
133
 
        For example, Process.respond_to?(:fork) returns false on Windows.
134
 
 
135
 
    * incompatible changes:
136
 
      * Kernel#instance_eval yields the receiver.
137
 
 
138
 
      * Kernel#exec
139
 
      * Kernel#spawn
140
 
      * Kernel#system
141
 
      * Kernel#` (`...`)
142
 
        ..etc.
143
 
 
144
 
        On Windows, the current directory is no longer implicitly
145
 
        prepended to the default command search path, just like other
146
 
        platforms.
147
 
 
148
 
  * MatchData
149
 
    * New method:
150
 
      * MatchData#==
151
 
 
152
 
  * NilClass
153
 
    * new methods:
154
 
      * NilClass#rationalize
155
 
 
156
 
  * Object
157
 
    * extended methods:
158
 
      * Float() supports hexadecimal floating point format.
159
 
      * printf() supports %a/%A format.
160
 
 
161
 
  * Proc
162
 
    * extended method:
163
 
      * Proc#source_location returns location even if receiver is a method
164
 
        defined by attr_reader / attr_writer / attr_accessor.
165
 
 
166
 
  * Process
167
 
    * extended methods:
168
 
      * Process.spawn accepts [:child, FD] for a redirect target.
169
 
 
170
 
  * Random (new class to generate pseudo-random numbers)
171
 
 
172
 
  * Rational
173
 
    * new methods:
174
 
      * Rational#rationalize
 
86
    * move #__id__ to BasicObject.
 
87
    * extended method:
 
88
      * Kernel#rand supports range argument
 
89
 
 
90
  * Module
 
91
    * new methods:
 
92
      * Module#private_constant
 
93
      * Module#public_constant
 
94
 
 
95
  * Random
 
96
    * extended method:
 
97
      * Random.rand supports range argument
175
98
 
176
99
  * String
177
 
    * extended methods:
178
 
      * string[regexp, name] is supported for named capture.
179
 
 
180
 
  * Thread
181
 
    * new methods:
182
 
      * Thread#add_trace_func
183
 
      * Thread#set_trace_func
 
100
    * extended method:
 
101
      * String#unpack supports endian modifiers
 
102
    * new method:
 
103
      * String#prepend
 
104
      * String#byteslice
184
105
 
185
106
  * Time
186
 
    * extended feature:
187
 
      * time_t restriction is removed to represent before 1901 and after 2038.
188
 
        Proleptic Gregorian calendar is used for old dates.
189
 
      * Time.new have optional arguments to specify date with time offset.
190
 
      * Time#getlocal, Time#localtime have optional time offset argument.
191
 
 
192
 
    * new method:
193
 
      * Time#to_r
194
 
      * Time#subsec
195
 
      * Time#round
196
 
 
197
 
    * incompatible changes:
198
 
      * The year argument of Time.{utc,gm,local,mktime} is now interpreted as
199
 
        the value itself.  For example, Time.utc(99) means the year 99 AD,
200
 
        not 1999 AD.
201
 
 
202
 
* digest
 
107
    * extended method:
 
108
      * Time#strftime supports %:z and %::z.
 
109
 
 
110
  * Process
 
111
    * Process#maxgroups and Process#maxgroups= now raise NotImplementedError if
 
112
      the platform don't support supplementary groups concept.
 
113
 
 
114
* bigdecimal
 
115
 
 
116
  * BigDecimal#power and BigDecimal#** support non-integral exponent.
 
117
 
 
118
  * Kernel.BigDecimal and BigDecimal.new now accept instances of Integer,
 
119
    Rational, Float, and BigDecimal.  If you pass a Rational or a Float to
 
120
    them, you must specify the precision to produce the digits of a BigDecimal.
 
121
 
 
122
  * The behavior of BigDecimal#coerce with a Rational is changed.  It uses
 
123
    the precision of the receiver BigDecimal to produce the digits of a
 
124
    BigDecimal from the given Rational.
 
125
 
 
126
* bigdecimal/util
 
127
 
 
128
  * BigDecimal#to_d and Integer#to_d are added.
 
129
 
 
130
  * Float#to_d accepts a precision.
 
131
 
 
132
  * Rational#to_d raises ArgumentError when passing zero or negative
 
133
    precision.
 
134
 
 
135
  * Rational#to_d
 
136
 
 
137
    * Zero and an implicit precision is deprecated.
 
138
      This feature is removed at the next release of bigdecimal.
 
139
 
 
140
    * A negative precision isn't supported.
 
141
      Be careful it is an incompatible change.
 
142
 
 
143
* date
 
144
 
 
145
  * Accepts flonum explicitly with limitations.
 
146
    * If the given offset is flonum, DateTime assumes its precision is
 
147
      at most second.
 
148
 
 
149
      DateTime.new(2001,2,3,0,0,0,3.0/24) ==
 
150
      DateTime.new(2001,2,3,0,0,0,'+03:00')
 
151
        #=> true
 
152
 
 
153
    * If the given operand for -/+ is flonum, DateTime assumes its
 
154
      precision is at most nanosecond.
 
155
 
 
156
      DateTime.new(2001,2,3) + 0.5 == DateTime.new(2001,2,3,12)
 
157
        #=> true
 
158
 
 
159
    * Precision of offset is always at most second.
 
160
 
 
161
      Rational('0.5') == Rational('0.500001')  #=> false
 
162
      DateTime.new(2001,2,3,0,0,0,Rational('0.5')) ==
 
163
      DateTime.new(2001,2,3,0,0,0,Rational('0.500001'))
 
164
        #=> true
 
165
 
 
166
  * Ignores long offset and far reform day (with warning).
 
167
 
 
168
    * Now accepts only:
 
169
 
 
170
      -1<=offset<=1 (-24:00..+24:00)
 
171
      2298874<=start<=2426355 or -/+oo
 
172
        (proleptic Gregorian/Julian mean -/+oo)
 
173
 
 
174
  * A method strftime cannot produce huge output (same as Time's one).
 
175
 
 
176
    * Even though Date/DateTime can handle far dates, the following causes
 
177
      an exception.
 
178
 
 
179
      DateTime.new(1<<10000).strftime('%Y')  # Errno::ERANGE
 
180
 
 
181
  * Changed the format of inspect.
 
182
  * Changed the format of marshal (but, can load old dumps).
 
183
 
 
184
* io/console
203
185
  * new methods:
204
 
    * Digest::Class.base64digest
205
 
    * Digest::Instance#base64digest
206
 
    * Digest::Instance#base64digest!
207
 
 
208
 
  * Digest::HMAC (digest/hmac) has been marked as deprecated because
209
 
    it was unintentional for the experimental library to be included
210
 
    in the final release of 1.9.1.  Please use OpenSSL::HMAC instead.
211
 
 
212
 
* rss
213
 
 
214
 
  * 0.2.4 -> 0.2.7.
215
 
 
216
 
  * RSS::Maker.make
217
 
    * raise an exception not returns nil for invalid feed making.
218
 
    * requires block.
219
 
 
220
 
  * RSS::Maker.[]
221
 
    * new method to return maker class.
222
 
 
223
 
  * RSS::Maker.supported?(version)
224
 
    * new method to check whether given version is supported.
225
 
 
226
 
  * RSS::Maker: item.guid.permanent_link?
227
 
    * new alias of item.guid.isPermaLink
228
 
  * RSS::Maker: item.guid.permanent_link=
229
 
    * new alias of item.guid.isPermaLink=
230
 
 
231
 
* DL
232
 
  * Now uses libffi as a backend if avaiable.
233
 
    It means DL works fine on more platforms.
234
 
 
235
 
* Fiddle
236
 
  * A lightweight wrapper for libffi.
237
 
 
238
 
* YAML
239
 
  * Now uses libyaml as a backend if available.
240
 
    It means YAML library supports new standards for YAML.
241
 
 
242
 
* Psych
243
 
  * A wrapper for libyaml.
244
 
 
245
 
* JSON
246
 
  * Update to JSON 1.1.9
247
 
 
248
 
* REXML
249
 
 
250
 
  * REXML::Document.entity_expansion_limit=
251
 
 
252
 
    New method to set the entity expansion limit. By default the limit is
253
 
    set to 10000.  See the following URL for details.
254
 
 
255
 
    http://www.ruby-lang.org/en/news/2008/08/23/dos-vulnerability-in-rexml/
256
 
 
257
 
* RDoc
258
 
 
259
 
  * Updated to RDoc 2.5.8
260
 
 
261
 
* RubyGems
262
 
 
263
 
  * Updated to RubyGems 1.3.7
264
 
 
265
 
* logger
266
 
 
267
 
  * imported upstream version (logger/1.2.7)
268
 
    * do not raise an exception even if log writing failed.
269
 
    * do not raise ShiftingError if an aged file already exists.
270
 
      (no ShiftingError will be raised from 1.2.7, just warn() instead)
 
186
    * IO#noecho {|io| }
 
187
    * IO#echo=
 
188
    * IO#echo?
 
189
    * IO#raw {|io| }
 
190
    * IO#raw!
 
191
    * IO#getch
 
192
    * IO#winsize
 
193
    * IO.console
 
194
 
 
195
* json
 
196
  * updated to v1.5.4.
271
197
 
272
198
* matrix
273
 
  * API change to adhere strictly to mathematical definitions:
274
 
    * Matrices must now be rectangular.
275
 
    * trace, regular?, singular? are defined only for square matrices
276
 
    * support for empty matrices
277
 
    * all integer matrices now have the right determinant (also an integer)
278
 
 
279
 
  * Matrix and Vector include Enumerable.
280
 
 
 
199
  * new classes:
 
200
    * Matrix::EigenvalueDecomposition
 
201
    * Matrix::LUPDecomposition
281
202
  * new methods:
282
 
    * Matrix.build
283
 
    * Matrix.empty
284
 
    * Matrix#conj
285
 
    * Matrix#conjugate
286
 
    * Matrix#each
287
 
    * Matrix#each_with_index
288
 
    * Matrix#empty?
289
 
    * Matrix#imag
290
 
    * Matrix#imaginary
291
 
    * Matrix#real
292
 
    * Matrix#real?
293
 
    * Matrix#rect
294
 
    * Matrix#rectangular
 
203
    * Matrix#diagonal?
 
204
    * Matrix#eigen
 
205
    * Matrix#eigensystem
 
206
    * Matrix#hermitian?
 
207
    * Matrix#lower_triangular?
 
208
    * Matrix#lup
 
209
    * Matrix#lup_decomposition
 
210
    * Matrix#normal?
 
211
    * Matrix#orthogonal?
 
212
    * Matrix#permutation?
 
213
    * Matrix#round
 
214
    * Matrix#symmetric?
 
215
    * Matrix#unitary?
 
216
    * Matrix#upper_triangular?
 
217
    * Matrix#zero?
 
218
    * Vector#magnitude, #norm
 
219
    * Vector#normalize
 
220
  * extended methods:
 
221
    * Matrix#each and #each_with_index can iterate on a subset of the elements
 
222
    * Matrix#find_index returns [row, column] and can iterate on a subset
 
223
      of the elements
 
224
    * Matrix#** implements Numeric exponents (using the eigensystem)
 
225
    * Matrix.zero can build rectangular matrices
 
226
 
 
227
* minitest
 
228
  * Minitest has been updated to version 2.2.2.
 
229
  * For full details, see https://github.com/seattlerb/minitest/blob/master/History.txt
295
230
 
296
231
* net/http
297
 
  * merged net/https.
298
 
 
299
 
* open3
300
 
  * new methods:
301
 
    * Open3.popen2
302
 
    * Open3.popen2e
303
 
    * Open3.capture3
304
 
    * Open3.capture2
305
 
    * Open3.capture2e
306
 
    * Open3.pipeline_rw
307
 
    * Open3.pipeline_r
308
 
    * Open3.pipeline_w
309
 
    * Open3.pipeline_start
310
 
    * Open3.pipeline
311
 
 
312
 
* pty
313
 
  * new methods:
314
 
    * PTY.open
315
 
    * PTY.check
316
 
  * deprecated methods:
317
 
    * protect_signal
318
 
    * reset_signal
 
232
  * SNI (Server Name Indication) supported for HTTPS.
 
233
 
 
234
  * Allow to configure to wait server returning '100 continue' response
 
235
    before sending HTTP request body. Set Net::HTTP#continue_timeout AND pass
 
236
    'expect' => '100-continue' to a extra HTTP header.
 
237
 
 
238
    For example, the following code sends HTTP header and waits for getting
 
239
    '100 continue' response before sending HTTP request body. When 0.5 [sec]
 
240
    timeout occurs or the server send '100 continue', the client sends HTTP
 
241
    request body.
 
242
      http.continue_timeout = 0.5
 
243
      http.request_post('/continue', 'body=BODY', 'expect' => '100-continue')
 
244
 
 
245
  * new method:
 
246
    * Net::HTTPRequest#set_form): Added to support
 
247
      both application/x-www-form-urlencoded and multipart/form-data.
 
248
 
 
249
* objspace
 
250
  * new method:
 
251
    * ObjectSpace::memsize_of_all
319
252
 
320
253
* openssl
321
 
  * new methods:
322
 
    * OpenSSL::Buffering#read_nonblock
323
 
    * OpenSSL::Buffering#write_nonblock
324
 
    * OpenSSL::SSL::SSLSocket#connect_nonblock
325
 
    * OpenSSL::SSL::SSLSocket#accept_nonblock
326
 
 
327
 
* scanf
328
 
  * support %a/%A format.
329
 
 
330
 
 
331
 
* socket
332
 
 
333
 
  * incompatible changes:
334
 
    * Socket#{recvfrom,recvfrom_nonblock,accept,accept_nonblock,sysaccept}
335
 
      returns a sender address as Addrinfo object instead of a binary sockaddr string.
336
 
      Addrinfo#to_s returns the old binary sockaddr string.
337
 
    * BasicSocket#getsockopt returns Socket::Option object instead of a binary string.
338
 
      Socket::Option#to_s returns the old binary string.
339
 
    * Socket.do_not_reverse_lookup is turned on by default now.
340
 
 
341
 
  * new class:
342
 
    * Addrinfo
343
 
    * Socket::Option
344
 
    * Socket::AncillaryData
345
 
 
346
 
  * new methods:
347
 
    * Socket.ip_address_list
348
 
    * Socket.tcp
349
 
    * Socket.tcp_server_loop
350
 
    * Socket.tcp_server_sockets
351
 
    * Socket.udp_server_sockets
352
 
    * Socket.udp_server_loop_on
353
 
    * Socket.udp_server_loop
354
 
    * Socket.unix
355
 
    * Socket.unix_server_loop
356
 
    * Socket.unix_server_socket
357
 
    * Socket.accept_loop
358
 
    * Socket#ipv6only!
359
 
    * BasicSocket#local_address
360
 
    * BasicSocket#remote_address
361
 
    * BasicSocket#connect_address
362
 
    * BasicSocket#sendmsg
363
 
    * BasicSocket#sendmsg_nonblock
364
 
    * BasicSocket#recvmsg
365
 
    * BasicSocket#recvmsg_nonblock
366
 
    * BasicSocket#getpeereid
367
 
 
368
 
  * extended methods:
369
 
    * Socket.new's 3rd argument is optional now.
370
 
    * Socket.pair's 3rd argument is optional now.
371
 
    * Socket.pair and UNIXSocket.pair can take a block.
372
 
    * BasicSocket#send, UDPSocket#send, Socket.getnameinfo, Socket#bind, and
373
 
      Socket#{connect,connect_nonblock} accepts an Addrinfo object as sockaddr.
374
 
    * BasicSocket#getsockopt accepts a Socket::Option object.
375
 
    * Socket.getaddrinfo and IPSocket#{addr,peeraddr} accept an optional
376
 
      argument to turn reverse lookup on/off.
377
 
 
378
 
    * constant names can be accepted as well as constant values.
379
 
      i.e. Socket.new(:PF_INET, :SOCK_STREAM, 0)
380
 
      The constant names can be specified without the prefix.
381
 
      i.e. Socket.new(:INET, :STREAM, 0)
382
 
      * protocol/address family
383
 
      * socket type
384
 
      * socket option protocol level
385
 
      * socket option name
386
 
      * shutdown's argument
 
254
  * PKey::RSA and PKey::DSA now use the generic X.509 encoding scheme
 
255
    (e.g. used in a X.509 certificate's Subject Public Key Info) when
 
256
    exporting public keys to DER or PEM. Backward compatibility is
 
257
    ensured by (already existing) fallbacks during creation.
 
258
  * OpenSSL::ASN1::Constructive#new and OpenSSL::ASN1::Primitive#new
 
259
    (and the constructors of their sub-classes) will no longer force
 
260
    tagging to be set to :EXPLICIT when tag and/or tag_class are passed
 
261
    as parameters. tagging must be set explicitly.
 
262
  * Support for infinite length encodings via infinite_length attribute.
 
263
  * OpenSSL::PKey.read( file | string [, pwd] ) allows to read arbitrary
 
264
    public/private keys in DER-/PEM-encoded form with an optional password
 
265
    for encrypted PEM encodings.
 
266
  * Add new method OpenSSL::X509::Name#hash_old as a wrapper of
 
267
    X509_NAME_hash_old() defined from OpenSSL 1.0.0. It returns OpenSSL 0.9.8
 
268
    compatible hash value.
 
269
 
 
270
* optparse
 
271
  * support for bash/zsh completion.
 
272
 
 
273
* Rake
 
274
  * Rake has been upgraded from 0.8.7 to 0.9.2.2.  For full release notes see
 
275
    https://github.com/jimweirich/rake/blob/master/CHANGES
 
276
 
 
277
* RDoc
 
278
  * RDoc has been upgraded to version 3.9.4.  For full release notes see
 
279
    http://docs.seattlerb.org/rdoc/History_txt.html
 
280
 
 
281
* rexml
 
282
  * Support Ruby native encoding mechanism and iconv dependency is dropped.
 
283
 
 
284
* RubyGems
 
285
  * RubyGems has been upgraded to version 1.8.10. For full release notes see
 
286
    http://rubygems.rubyforge.org/rubygems-update/History_txt.html
387
287
 
388
288
* stringio
389
 
  * new methods:
390
 
    * StringIO#read_nonblock
391
 
    * StringIO#write_nonblock
392
 
* pathname
393
 
  * new methods:
394
 
    * Pathname#binread
395
 
    * Pathname#realdirpath
396
 
    * Pathname#each_child
397
 
 
398
 
  * extended methods:
399
 
    * Pathname#realpath and Pathname#realdirpath takes optional basedir
400
 
      argument.
401
 
 
402
 
* Readline
403
 
  * new methods:
404
 
    * Readline.set_screen_size
405
 
    * Readline.get_screen_size
406
 
 
407
 
  * extended methods:
408
 
    * Readline.completion_proc= accepts nil.
409
 
      nil means to use default completion proc.
410
 
 
411
 
* set
412
 
  * new methods:
413
 
    * Set#keep_if
414
 
    * Set#select!
415
 
 
416
 
* time
417
 
  * incompatible changes:
418
 
    * Time.parse raises ArgumentError when no date information.
419
 
 
420
 
* thread
421
289
  * extended method:
422
 
    * ConditionVariable#wait takes timeout argument.
423
 
 
424
 
* securerandom
425
 
  * new methods:
426
 
    * SecureRandom.urlsafe_base64
427
 
 
428
 
* URI
429
 
  * new methods:
430
 
    * URI.encode_www_form
431
 
    * URI.decode_www_form
432
 
    * URI.encode_www_form_component
433
 
    * URI.decode_www_form_component
434
 
  * Obsoleted methods:
435
 
    * URI.decode
436
 
    * URI.encode
437
 
    * URI.escape
438
 
    * URI.unescape
439
 
 
440
 
* etc
441
 
  * new methods:
442
 
    * Etc::Passwd.each
443
 
    * Etc::Group.each
 
290
    * StringIO#set_encoding can get 2nd argument and optional hash.
 
291
 
 
292
* test/unit
 
293
  * New arguments:
 
294
    * -j N, --jobs=N: Allow run N testcases at once.
 
295
    * --jobs-status: Show status of jobs when parallel running.
 
296
    * --no-retry: Don't retry testcases which failed when parallel running.
 
297
    * --ruby=RUBY: path to ruby for job(worker) process. optional.
 
298
    * --hide-skip: Hide skip messages. You'll see the number of skips at end of
 
299
      test result.
 
300
 
 
301
* uri
 
302
  * new methods:
 
303
    * URI::Generic#hostname
 
304
    * URI::Generic#hostname=
 
305
 
 
306
* webrick
 
307
  * new method:
 
308
    * WEBrick::HTTPRequest#continue for generating '100 continue' response.
 
309
  * new logging directive:
 
310
    * %{remote}p for remote (client) port number.
 
311
 
 
312
* yaml
 
313
  * The default YAML engine is now Psych. You may downgrade to syck by setting
 
314
    YAML::ENGINE.yamler = 'syck'.
444
315
 
445
316
* zlib
446
317
  * new methods:
447
 
    * Zlib::GzipFile#path
448
 
    * Zlib.#adler32_combine
449
 
    * Zlib.#crc32_combine
 
318
    * Zlib.deflate
 
319
    * Zlib.inflate
450
320
 
451
 
* rbconfig
452
 
  * new methods:
453
 
    * RbConfig.ruby
 
321
* FileUtils
 
322
  * extended method:
 
323
    * FileUtils#chmod supports symbolic mode argument.
454
324
 
455
325
=== Language changes
456
326
 
457
 
* Regexp properties (\p{}) names now ignore underscores, spaces, and case, so
458
 
  \p{ol chiki} is the same as \p{Ol_Chiki}
459
 
* Regexps now support Unicode 5.2 (new characters and scripts)
460
 
* \d, \s, and \w are now ASCII only; use POSIX bracket classes and \p{} for
461
 
  Unicode semantics
462
 
* $: no longer includes the current directory, use require_relative
463
 
* Symbol with an invalid encoding is forbidden to exist.
464
 
 
465
 
=== Compilation options
466
 
 
467
 
* --program-prefix and --program-suffix no longer act on the shared object
468
 
  names nor paths to libraries.
469
 
 
470
 
  use --with-rubylibprefix='${libruby}/${RUBY_INSTALL_NAME}' and
471
 
  --with-soname='${RUBY_INSTALL_NAME}' for the same result as Ruby 1.9.1.
472
 
 
473
 
* --with-arch is added for universal binary, instead of
474
 
  --enable-fat-binary option.
 
327
* Regexps now support Unicode 6.0. (new characters and scripts)
 
328
 
 
329
* [experimental] Regexps now support Age property.
 
330
  Unlike Perl, current implementation takes interpretation of the
 
331
  interpretation of UTS #18.
 
332
  http://www.unicode.org/reports/tr18/
 
333
 
 
334
* Turning on/off indentation warnings with directives.
 
335
  ("# -*- warn-indent: true -*-" / "# -*- warn-indent: false -*-")
475
336
 
476
337
=== Compatibility issues (excluding feature bug fixes)
477
338
 
478
 
  * Enumerator#rewind
479
 
  * Socket#recvfrom
480
 
  * Socket#recvfrom_nonblock
481
 
  * Socket#accept
482
 
  * Socket#accept_nonblock
483
 
  * Socket#sysaccept
484
 
  * BasicSocket#getsockopt
485
 
  * Time.utc
486
 
  * Time.gm
487
 
  * Time.local
488
 
  * Time.mktime
489
 
  * Time.parse
490
 
  * --program-prefix and --program-suffix
491
 
  * --enable-fat-binary
492
 
  * $:
 
339
  * Rational#to_d
493
340
 
494
341
    See above.
495
 
 
496
 
  * Digest::HMAC
497
 
 
498
 
    Deprecated.  See above.