= Ruby 1.8.3 News == Documents * exception error messages updated. [ruby-core:04497] * [ruby-core:04296], [ruby-core:04301], [ruby-core:04302], [ruby-core:04307] == LEGAL * (ext/nkf/nkf-utf8) updated from nkf1.7 to nkf-utf8. == Makefile.in * miniruby on HP-UX can not load extension libraries. * integrated macro definitions. * miniruby depens on MINIOBJS. * backport extout. [ruby-dev:25963] == Portablity * merged a patch from Takahiro Kambe to support DragonFly BSD. [ruby-dev:26984] == README.EXT * utility functions. == README.EXT.ja * (Appendix C) utility functions. == array.c * (sort_2) get rid of yet another bcc's bug. fixed: [ruby-core:05152] * (rb_ary_select) can remove argc check. [ruby-core:4911] * (rb_ary_s_create) no need for negative argc check. [ruby-core:04463] * (rb_ary_unshift_m) (rb_ary_s_create) no need for negative argc check. [ruby-core:04463] == bignum.c * (bignew_1, bigadd) K&R style argument actually can't be defined as char. * (rb_big_coerce) allow bignum x bignum coercing. [ruby-dev:26778] * (rb_big_eq) reduce isnan(). [ruby-dev:26600] * (get2comp) revert all prior changes, and calculate proper 2's complement for negative numbers. backported from HEAD. * (get2comp) calculate proper 2's complement for negative numbers. a bug in normalizing negative numbers reported from Honda Hiroki . * (rb_big2ulong_pack) One too many arguments are passed to big2ulong(). * (rb_big_rand) should return positive random number. [ruby-dev:25401] * (rb_big_rand) do not use rb_big_modulo to generate random bignums. [ruby-dev:25396] == class.c * (rb_class_init_copy) singleton class is disallowed to copy, from its definition. fixed: [ruby-talk:142749] == common.mk * integrated macro definitions. * miniruby depens on MINIOBJS. * (RUBYOPT) clear for the environment RubyGems installed. * (clean-local) keep $(PREP) files till distclean. * (check) do all tests. * backport extout. [ruby-dev:25963] == configure.in * (MINIOBJS) miniruby on HP-UX can not load extension libraries. * define rb_[pgu]id_t macros instead of typedefs to get rid of types which might not be defined yet. [ruby-dev:26165] * Check for the availability of pid_t, gid_t and uid_t and remove AC_TYPE_UID_T. fixed: [ruby-core:04745] * (RUBY_PROG_INSTALL) not add -p option to INSTALL. files need timestamps to be kept are only ar-archive on a few platforms, and be installed by instruby.rb but not INSTALL. fixed: [ruby-core:04721] * (mingw32) extract msvcr*.dll from objdump result. * (mingw32) use actual runtime DLL name as ruby DLL name and default load path. * (CP, INSTALL) get rid of less portable options. * backport extout. [ruby-dev:25963] * (WIN32_LEAN_AND_MEAN) removed because a lot of troubles. [ruby-list:40721] * (aix) fix linker flags on AIX. [ruby-talk:125460] * (aix) fix typo. [ruby-talk:126401] == defines.h * (FLUSH_REGISTER_WINDOWS) defined for IA64. (flush_register_windows): declare flush_register_windows. * Remove pid_t typedef. == dir.c * (ruby_glob) glob function not using ruby exception system. * (dir_each) rewinddir(3) before iteration. [ruby-talk:149628] * avoid warning "unused variable" [ruby-dev:26387] * (glob_helper) get rid of using String. [ruby-dev:26180] * (push_braces) should skip balanced braces. * avoid warnings for mingw. * (fnmatch) removed unnecessary code. (ruby_1_8 didn't have String#clear, so [ruby-dev:24749] didn't affect it) * (rb_push_glob) should work for NUL delimited patterns. * (dir_s_mkdir) win32 special processing doesn't need any longer. (backported from CVS HEAD) == dmydln.c * (dln_load) dummy function to raise LoadError. == enum.c * (enum_min, enum_max) must not return Qundef. fixed: [ruby-core:05299] * (enum_min, enum_max) do not ignore nil as the first element. * (enum_inject) default the result value to Qundef to use first element as initial value if not given. * (enum_min_by, enum_max_by) return nil if no iteration. fixed: [ruby-dev:26245] == error.c * (syserr_initialize) don't use str before StringValue() check. [ruby-dev:26579] * (syserr_initialize) add 1 byte for snprintf() size for NUL at the end. [ruby-dev:26574] * (exc_exception) reverted to call Exception#initialize directly. fixed: [ruby-dev:26177] * (exc_exception, exit_initialize, name_err_initialize, syserr_initialize) call Execption#initialize. fixed: [ruby-talk:142593] == eval.c * (BEGIN_CALLARGS) pop halfly pushed status. fixed: [ruby-dev:26881] * (rb_call0) prohibit calling tainted method (>2) when $SAFE == 0. * (rb_thread_switch) convert all exceptions to SystemExit. fixed: [ruby-core:05724] * (rb_thread_terminated) show backtrace before propagate exceptions to main thread. * (rb_call0) wrong condition for $SAFE restoration. * (rb_rescue2) initialization miss. fixed: [ruby-dev:26917] * (method_arity) should return proper arity value. [ruby-dev:26390] * (terminate_process) take String message. * (rb_thread_switch) propagate the exception caused thread termination directly. fixed: [ruby-core:05552] * (rb_add_method) preserve safe level in the environment where a method is defined . * (rb_call0) restore preserved safe level in the method execution. * (rb_rescue2) reduce PUSH_TAG() as well as NODE_RESCUE. [ruby-dev:26800] * (rb_block_pass) distinguish current block from others. fixed: [ruby-dev:26274] * (rb_yield_0) push yielded node instead of yielding. fixed: [yarv-dev:549] * (rb_call0) make the pointer to NODE volatile instead of NODE itself. * (rb_call0) make body volatile to avoid optimization problem. [ruby-dev:26195] * (rb_thread_save_context) must not switch contexts during re-allocating stack. fixed: [ruby-core:05219] * (flush_register_windows) new function. * (rb_eval) pre-evaluate argument for unambiguous evaluation order. [ruby-dev:26383] * avoid warning "unused variable" [ruby-dev:26387] * (FUNCTION_CALL_MAY_RETURN_TWICE) DUMMY_SETJMP is replaced because setjmp is not enough to fix getcontext and SPARC register window problem. * (rb_thread_signal_exit) a new function to exit on main thread. * (rb_thread_switch) exit status should be retrieved from ruby_errinfo. * (rb_f_exit) ensure exit(0) should call exit(EXIT_SUCCESS). * (rb_gc_mark_threads) curr_thread may not be part of the thread list. [ruby-dev:26312] * (ruby_longjmp) new macro to call longjmp, setcontext, etc. (ruby_setjmp): new macro to call setjmp, getcontext, etc. (ruby_setjmp): call setjmp before getcontext to avoid IA64 register stack problem. [ruby-talk:144939] * (rb_need_block) ensure a block is given. * (backtrace) skip successive frames sharing same node. * (ruby_options) move argument intialization back. [ruby-dev:26180] * (unknown_node) add volatile directive to prototype. * (rb_eval) reduce fixnum range literal at parser. fixed: [ruby-dev:26113] * (unknown_node) ignore broken NODE to get rid of accessing possibly inaccessible address. fixed: [ruby-dev:26122] should emit more useful information like [ruby-dev:26126], though. * (break_jump) break should not cross functions. [ruby-list:40818] * (TMP_ALLOC) use macro NEW_NODE() to get rid of warnings on platforms which have no alloca(). fixed: [ruby-talk:141301] * (rb_call0) "return" event hook should be always executed if event_hooks is set. fixed: [ruby-core:04662] (backported from HEAD) * (rb_call0) check event_hooks instead of trace_func. * (rb_add_event_hook) new function to add a hook function for interpreter events. (backported form HEAD) * (rb_call0) call_cfunc() should be protected. * (rb_call0) reorganize "return" event post. * (block_pass) should not push unique number if a block is not an orphan. [ruby-dev:25808] * (is_defined) NODE_IASGN is an assignment. * (stack_extend) add prototype because VC++8 doesn't accept __declspec(noinline) with K&R style function definitions. (backported from CVS HEAD) * (rb_thread_initialize) Thread objects cannot be initialized again. fixed: [ruby-core:04067] * (svalue_to_avalue) [ruby-dev:25366] == extmk.rb * (extmake) needs to be wrapped in an Array. == file.c * (rb_thread_flock) wrap the flock system call by TRAP_BEG/TRAP_END to enable signals. [ruby-dev:27122] * (rb_file_s_extname) empty string for path name ending with a period. fixed: [ruby-core:05651] * (rb_file_join) smarter behavior at edge cases. fixed: [ruby-core:05706] * (lstat) avoid warnings for mingw. == gc.c * (obj_free) make message format consistent with one from gc_mark(). [ruby-talk:149668] * (define_final) document fix: finalizers never get called before target object is destroyed. * (run_final) reduce unnecessary object allocation during finalization. * (rb_gc_call_finalizer_at_exit) deferred finalizers list should be cleared before calling them. fixed: [ruby-talk:145790] * (Init_stack) remove IA64_MAGIC_STACK_LIMIT. * (rb_data_object_alloc) klass may be NULL. [ruby-list:40498] * (mark_locations_array) avoid core dump with -O3. [ruby-dev:25424] == hash.c * avoid warning "unused variable" [ruby-dev:26387] * (ruby_setenv) fixed SEGV. [ruby-dev:26186] == instruby.rb * expand source library path. * backport extout. [ruby-dev:25963] * no longer embed srcdir into rbconfig.rb. (backported from CVS HEAD) == io.c * (rb_io_syswrite) wrap the write system call by TRAP_BEG/TRAP_END to enable signals when writing to a pipe which is full. [ruby-dev:27134] * (io_fwrite) wrap the write system call by TRAP_BEG/TRAP_END to enable signals when writing to a pipe which is full. * check HAVE_SYS_IOCTL_H before including the header. [ruby-dev:26610] * (S_ISREG) need to define S_ISREG before it is used first. * (wsplit_p) patch for the environment where fcntl(F_GETFL, O_NONBLOCK) is not supported. in that case, set FMODE_WSPLIT without fcntl check. [ruby-dev:26566] * (rb_io_ctl) update FMODE_WSPLIT_INITIALIZED and FMODE_WSPLIT by F_SETFL. * (rb_io_inspect) replace sprintf() with "%s" format all over the place by snprintf() to avoid integer overflow. * (wsplit_p) new function. (io_fwrite): split writing data by PIPE_BUF if wsplit_p is true in multi-threaded mode. [ruby-dev:26540] * (rb_io_eof, remain_size, read_all, io_read, appendline, swallow, rb_io_each_byte, rb_io_getc) revert previous change. * (rb_io_eof, io_fread, appendline, swallow, rb_io_each_byte, rb_io_getc, rb_getc) call clearerr before getc to avoid stdio incompatibility. * (rb_io_eof, remain_size, read_all, io_read, appendline, swallow, rb_io_each_byte, rb_io_getc) don't rely EOF flag. [ruby-talk:141527] * (io_fread) don't warn nonblocking behavior by default. * (io_fread) warn nonblocking behavior. (io_readpartial): new method IO#readpartial. == lib * do not use __send__ to access private methods. [ruby-dev:26935] == missing.h * fd_set stuffs need sys/types.h. fixed: [ruby-core:05179] == mkconfig.rb * purge autoconf value variables. * no longer embed srcdir and compile_dir into rbconfig.rb. == numeric.c * (flo_eq, flo_gt, flo_ge, flo_lt, flo_le) (rb_big_eq) reduce isnan(). [ruby-dev:26600] * (fix_pow) support Fixnum ** Float case directly without coercing. [ruby-talk:142697] [ruby-talk:143054] * (Init_Numeric) turn off floating point exceptions on bcc32. "1e300".to_f had crashed by overflow. == object.c * (rb_mod_cvar_get, rb_mod_cvar_set) document fix from sheepman ; a bug in visibility description. [ruby-dev:26965] * (rb_to_integer) argument constified. * (rb_mod_cvar_get) Module#class_variable_get(): back ported from CVS HEAD. [ruby-talk:144741] * (rb_mod_cvar_set) Module#class_variable_set(). [ruby-talk:144741] * (str_to_id) fixed typo. * (str_to_id) warn for NUL containing strings. * [ruby-doc:818] * (rb_class_superclass) superclass of singleton class also should be a singleton class. fixed: [ruby-list:40519] == parse.y * (arg) (rb_eval) reduce fixnum range literal at parser. fixed: [ruby-dev:26113] * (parser_yylex) identfier after dot must not be a variable. == process.c * (proc_detach, proc_setmaxgroups) missing argument type declaration. (I recommend ANSI-style function) * avoid warning "unused variable" [ruby-dev:26387] * (detach_process_watcher) terminate process watcher thread right after rb_waitpid() succeed. [ruby-talk:146430] * Change instances of pid_t and gid_t to their rb_* counterparts. == random.c * (rand_init) suppress warning. * (rand_init) use ALLOC_N instead of ALLOCA_N [ruby-dev:25426] * (random_seed) O_NONBLOCK isn't defined on some platforms. [ruby-dev:25417] * (limited_big_rand) didn't work if SIZEOF_BDIGITS == 2. [ruby-dev:25408] * (random_seed) refined. * (init_by_array) (rb_w32_rmdir) new function. (backported from CVS HEAD) * (random_seed) don't use /dev/urandom if it is not character device. * (random_seed) use /dev/urandom if available. [ruby-dev:25392] == range.c * (range_check, range_init) reduce useless exceptions. == re.c * (make_regexp) should not return junk address during compile time. [ruby-dev:26206] * (make_regexp) need to free internal regexp structure when compilation fails. [ruby-talk:133228] * (rb_reg_init_copy, rb_reg_initialize_m) One too many arguments are passed to rb_reg_initialize(). == regex.c * (read_special) fix parsing backslashes following \c in regexp. fixed: [ruby-dev:26500] * declare rb_warn to have variadic argument. [ruby-core:4751] == ruby.c * avoid warning "unused variable" [ruby-dev:26387] * (require_libraries) caused SEGV when continuation jumped in to the required library code. * (process_sflag) replace '-' in variable names with '_'. [ruby-dev:26107] * (set_arg0) use also environment variable space for setting $0. [ruby-core:04774] * (proc_options) correct -T option in RUBYOPT. (backported from CVS HEAD) * (proc_options) ignore trailing CRs at the end of short options as well as long options. fixed: [ruby-core:04232] == ruby.h * define rb_[pgu]id_t macros instead of typedefs to get rid of types which might not be defined yet. [ruby-dev:26165] * Define rb_pid_t, rb_gid_t and rb_uid_t in accordance with the available system types. == rubyio.h * (FMODE_WSPLIT, FMODE_WSPLIT_INITIALIZED) new constant. * (rb_eof_error) should mark as NORETURN. (backported from CVS HEAD) == rubytest.rb * (srcdir) no longer embed srcdir into rbconfig.rb. (backported from CVS HEAD) == runruby.rb * should load built rbconfig.rb. * backport extout. [ruby-dev:25963] == signal.c * (sigexit) call rb_thread_signal_exit() instead of rb_exit(). [ruby-dev:26347] == sprintf.c * (rb_f_sprintf) warn "too many argument" on verbose mode (-v/-w); backported from 1.9. [ruby-dev:26963] * (rb_f_sprintf) raise exception on debug mode (-d), not verbose mode (-v/-w). [ruby-core:05123] == st.c * (st_foreach) report success/failure by return value. [ruby-Bugs-1396] == string.c * (rb_str_substr) should propagate taintness even for empty strings. [ruby-dev:27121] * (rb_str_aref) should infect result if range argument is tainted. [ruby-dev:27121] * (rb_str_times) make empty strings to keep taintness, and a little improvement. [ruby-dev:26900] * (rb_str_cmp_m) should not return false but nil. fixed: [ruby-dev:25811] * (rb_str_new4) should propagate taintedness. * (rb_str_justify) [ruby-dev:25367] * (rb_str_justify) create buffer string after argument type conversion. fixed: [ruby-dev:25341] * (rb_str_justify) [ruby-dev:25341] == struct.c * (make_struct) allow non local-id field names. [ruby-core:04575] * (inspect_struct) (make_struct) allow non local-id field names. [ruby-core:04575] * (make_struct) fixed: [ruby-core:04402] * (rb_struct_set) use original method name, not callee name, to retrieve member slot. [ruby-core:04268] == time.c * (time_strftime) protect from format modification from GC finalizers. == ut_eval.rb * ditto. == ut_safe1.rb * ditto. == variable.c * (rb_class_path) need to adjust snprintf() len for teminating NUL. [ruby-dev:26581] * (generic_ivar_get) rb_attr_get should not warn. [ruby-dev:26010] * (rb_autoload) hide internal data from ruby level. fixed: [ruby-dev:25435], [ruby-list:40498] * (rb_autoload) [ruby-dev:25373] == version.c * (ruby_show_version) flush for non-tty stdout. == */Makefile.sub * backport extout. [ruby-dev:25963] == */configure.bat * backport extout. [ruby-dev:25963] == bcc32/Makefile.sub * (COMMON_HEADERS) reverted 1.42.2.24. I misunderstood, bccwin32 on ruby_1_8 uses winsock2 originally. [ruby-dev:26806] * integrated macro definitions. * LIBRUBY_SO should use DLDOBJS, not EXTOBJS. * moved CPPFLAGS only for ruby source to XCFLAGS. * (COMMON_HEADERS) ruby_1_8 is using winsock.h. failed to compile ext/socket on bcc5.6.4. [ruby-dev:26193] * can use single quote character in DESTDIR. [ruby-dev:26205] * tds files were not deleted when DESTDIR included '\' path delimiter. [ruby-dev:26193] * moved rb_[ugp]id_t to get rid of redefinition warnings on mingw. * make also INSTALL_PROG and INSTALL_DATA system dependent. fixed: [ruby-core:04931] * (BUILD_FILE_SEPARATOR) separator of building platform. * (CP, INSTALL) use COPY command. * miniruby can't load extensions on Windows. * quick hack... prepend DESTDIR. still have restriction on DESTDIR ("", "/", "e:") * failed to remove debug information files. fixed: [ruby-dev:26034] * ri data was not installed into correct path. [ruby-dev:26011] * defaulted install-nodoc. [ruby-dev:26011] * leave prefix empty in config.status for backward compatibility. fixed: [ruby-core:04649] * (config.h) add fcntl. == bcc32/configure.bat * add extout option. == bcc32/setup.mak * add extout option. * make configuration variables overridable. * leave prefix empty in config.status for backward compatibility. fixed: [ruby-core:04649] == bin/erb * (ERB::Main#run) set ERB#filename so that it is used when reporting syntax/runtime errors. Tabs converted to spaces. == cygwin/GNUmakefile.in * miniruby can't load extensions on Windows. * backport extout. [ruby-dev:25963] == ext/Win32API/Win32API.c * (Win32API_Call) disable global optimization. fixed: [ruby-core:05143] == ext/bigdecimal/bigdecimal.c * patch from "NATORI Shin" (u-tokyo.ac.jp) applied to fix rounding bug. == ext/bigdecimal/lib/bigdecimal/newton.rb * resolved LoadError. [ruby-dev:25685] == ext/bigdecimal/lib/bigdecimal/nlsolve.rb * removed because this file is sample script and same file exists in ext/bigdecimal/sample. == ext/curses/curses.c * (curses_clrtoeol, window_clrtoeol) added. suggested by Reyn Vlietstra. * chtype in curses is not `char', rahter `long'. [ruby-Bugs:2298] * (curses_insertln) merged a patch from TAKAHASHI Tamotsu . [ruby-ext:02305] * don't need to check HAVE_WCOLOR_SET excluding window_color_set(). * (window_color_set) [ruby-core:04393] == ext/curses/view.rb * String =~ String is deprecated. == ext/dbm/dbm.c * (fdbm_closed) new method DBM#closed? == ext/digest/md5/md5ossl.h * include to avoid error in compilation with OpenSSL-0.9.8. [ruby-list:41068] == ext/digest/rmd160/rmd160ossl.h * include to avoid error in compilation with OpenSSL-0.9.8. [ruby-list:41068] == ext/digest/sha1/sha1ossl.h * include to avoid error in compilation with OpenSSL-0.9.8. [ruby-list:41068] == ext/digest/sha2/extconf.rb * reject platforms which has inttypes.h but no 64bit integer. == ext/dl/dl.c * (rb_io_to_ptr) merged a patch for DragonFly BSD from Takahiro Kambe . [ruby-dev:27023] == ext/dl/sym.c * (rb_dlsym_call) needs FREE_ARGS before return. fixed memory leak. [ruby-Bugs-2034] == ext/etc/etc.c * (setup_passwd) pw_age might be char*. fixed: [ruby-core:05470] * (Init_etc) sGroup needs HAVE_ST_GR_PASSWD check. [ruby-dev:25675] == ext/etc/extconf.rb * pw_age might be char*. fixed: [ruby-core:05470] == ext/extmk.rb * (extmake) should not modify $mflags for each extentions. * keep srcdir unexpanded. * expand path for ext/**/extconf.rb. * (extmake, parse_args) do not expand destdir. * (relative_from) treat mere drive letter as an absolute path. * (extmake) hdrdir needs to be defined also in Config::CONFIG. * (extmake) keep directory names in Makefile as macros. * backport extout. [ruby-dev:25963] * (parse_args) add DESTDIR only when not directed already. fixed: [ruby-dev:25781] * (extmake) shouldn't set $extflags on mswin32. == ext/gdbm/gdbm.c * (fgdbm_closed) new method GDBM#closed? == ext/iconv/extconf.rb * (iconv_try) get rid of meta characters in command line option. fixed: [ruby-talk:155369] == ext/iconv/iconv.c * (iconv_try) get rid of meta characters in command line option. fixed: [ruby-talk:155369] * (iconv_create) Iconv::Failure requires 3 arguments. (pointed out by NaHi) * (Init_iconv) InvalidEncoding also should include Iconv::Failure. * backport Iconv::InvalidEncoding from CVS HEAD. == ext/io/wait/extconf.rb * Win32 platforms support. == ext/io/wait/wait.c * wrong backport from trunk. fixed: [ruby-dev:26562] * Win32 platforms support. == ext/nkf/lib/kconv.rb * (Kconv::RegexpEucjp) second byte is up to 0xfe. * (Kconv#kconv) should handle UTF8 and UTF16 properly. == ext/nkf/nkf-utf8/nkf.c * follow nkf 2.0.5 * follow nkf 1.66 fixed: [ruby-dev:25828] * follow nkf 1.63 * follow nkf 1.62 * (reinit) should initialize all static variables. fixed: [ruby-list:40445] == ext/openssl/extconf.rb * check for OPENSSL_cleanse. * get rid of GNUmakefile generation. == ext/openssl/lib/digest.rb * added SHA224, SHA256, SHA384 and SHA512. these features are enabled if this library is compiled with OpenSSL 0.9.8 or later. == ext/openssl/lib/net/https.rb * removed. == ext/openssl/lib/net/protocols.rb * removed. == ext/openssl/lib/openssl/buffering.rb * (Buffering#initialize) should set @eof and @rbuffer. (Buffering#fill_rbuff): should rescue Errno::EAGAIN. (Buffering#consume_rbuf): pointless eof flag resetting is deleted. (Buffering#read): should return an empty string if the specified size is zero. (Buffering#readpartial): new method. (Buffering#readline): fix typo. (Buffering#getc): return the first character of string correctly. (Buffering#each): fix typo. suggested by Brian Ollenberger. (Buffering#readchar): fix typo. (Buffering#eof?): should read again it the input buffer is empty. (Buffering#do_write): should rescue Errno::EAGAIN. (Buffering#puts): use "\n" as the output field separator. == ext/openssl/lib/openssl/cipher.rb * fix typo. [ruby-dev:24285] == ext/openssl/lib/openssl/ssl.rb * (OpenSSL::SSL::SSLServer#intialize) should initialize session id context. [ruby-core:4663] * set non-blocking flag to the underlying IO. * (OpenSSL::SSL::SSLSocket#post_connection_check) new method. == ext/openssl/openssl/lib/openssl/buffering.rb * (Buffering#do_write) should clear data from the buffer which already been output. == ext/openssl/openssl_missin.c * include before to avoid compilation error of mswin32. suggested by NAKAMURA Usaku. == ext/openssl/openssl_missing.c * avoid compiler warnings. suggested by Michal Rokos. == ext/openssl/openssl_missing.h * check for OPENSSL_cleanse. == ext/openssl/ossl.c * (ossl_raise) should use ERR_peek_last_error to get last error on the current thread. And should report errors on the stack while OpenSSL.debug is true. * (ossl_get_errors) new method for debugging this library. == ext/openssl/ossl.h * avoid compiler warnings. suggested by Michal Rokos. == ext/openssl/ossl_asn1.c * (asn1str_to_str) new function. * avoid compiler warnings. suggested by Michal Rokos. == ext/openssl/ossl_bio.c * avoid compiler warnings. suggested by Michal Rokos. == ext/openssl/ossl_engine.c * (ossl_engine_s_by_id) OpenSSL::Engine.by_id calls given block before calling ENGINE_init (block parameter is the return value of this method itself). this functionality is useful to load dynamic shared engines. the following code is a sample of loading a key using OpenSC PKCS #11 module. * (ossl_engine_ctrl_cmd) new method OpenSSL::Engine#ctrl_cmd. it wraps ENGINE_ctrl_cmd_string. * (ossl_engine_get_cmds) new method OpenSSL::Engine#cmds. it returms engine command definitions. * (ossl_engine_s_load) should check OPENSSL_NO_STATIC_ENGINE. * (ossl_engine_s_load) should return value. [ruby-dev:25971] * (ossl_engine_s_load) should not raise error even if the specified engine could not be loaded. (Dynamic engines don't have fixed name to load.) == ext/openssl/ossl_ns_pki.c * (ossl_spki_to_der) new method. == ext/openssl/ossl_ns_spki.c * (ossl_spki_initialize) assume that the argument is a DER string if Base64 decoding failed. * (ossl_spki_set_challenge) should call StringValue before GetSPKI. fixed: [ruby-dev:25359]. == ext/openssl/ossl_ocsp.c * (ossl_ocspreq_to_der) should call GetOCSPReq at first. == ext/openssl/ossl_pkcs12.h * avoid compiler warnings. suggested by Michal Rokos. == ext/openssl/ossl_pkcs7.c * new class OpenSSL::PKCS7::RecipientInfo. this class wraps PKCS7_RECIP_INFO struct. * OpenSSL::PKCS7::Signer is renamed to OpenSSL::PKCS7::SignerInfo. ("Signer" remains as an alias of SignerInfo.) == ext/openssl/ossl_pkey.c * (GetPrivPKeyPtr, ossl_pkey_sign) should call rb_funcall first. (DupPrivPKeyPtr): new function. == ext/openssl/ossl_pkey.h * add default DH parameters. == ext/openssl/ossl_pkey_dh.c * add default DH parameters. == ext/openssl/ossl_ssl.c * (ossl_sslctx_set_ciphers) fix error message. * (ossl_sslctx_setup) add session id support. * add callbacks to OpenSSL::SSL::SSLContexts. - SSLContext#client_cert_cb=(aProc). it is called when a client certificate is requested by a server and no certificate was not set for the SSLContext. it must return an Array which includes OpenSSL::X509::Certificate and OpenSSL::PKey::RSA/DSA objects. - SSLContext#tmp_dh_callback=(aProc). it is called in key exchange with DH algorithm. it must return an OpenSSL::PKey::DH object. * (ossl_sslctx_set_ciphers) ignore the argument if it's nil. * (ossl_start_ssl, ossl_ssl_write) call rb_sys_fail if errno isn't 0. [ruby-dev:25831] * (ossl_start_ssl, ossl_ssl_read, ossl_ssl_write) - need to set errno on Win32 platform. - should call rb_sys_fail instead of rasing SSLError if SSL_ERROR_SYSCALL occured. - should wait for that the underlying IO become readable or writable if the error was SSL_ERROR_WANT_READ or SSL_ERROR_WANT_WRITE. [ruby-dev:25795] == ext/openssl/ossl_x509name.c * (Init_ossl_x509name) should use rb_hash_new to get exactly a Hash. fix [ruby-dev:25325]. == ext/openssl/ossl_x509req.c * (ossl_x509req_set_attributes) get rid of unused variable. * avoid compiler warnings. suggested by Michal Rokos. == ext/openssl/ossl_x509store.c * (ossl_x509store_initialize) should set @time to avoid warning. * (ossl_x509store_set_default_paths, X509_STORE_add_cert, X509_STORE_add_crl) should raise error if wrapped functions failed. * (ossl_x509stctx_set_time) should not set internal flag directry. * (ossl_x509store_set_default_paths) new method OpenSSL::X509::Store#set_default_paths. == ext/pty/pty.c * Change pid_t to rb_pid_t. == ext/readline/extconf.rb * supported libedit. (backported from HEAD) == ext/readline/readline.c * supported libedit. (backported from HEAD) * suppress warnings. == ext/sdbm/init.c * (fsdbm_select) SDBM#select had returned the array which contained each elements twice. [ruby-dev:26358] * (fsdbm_closed) new method SDBM#closed? == ext/socket/extconf.rb * should not define HAVE_CLOSESOCKET on windows. * (sockaddr_storage) remove workaround for mswin32. * (sockaddr_storage) winsock2.h have the definition of struct sockaddr_storage, but socket.c doesn't include it because this version of ruby still has binary level compatibility with winsock1. * check if getaddrinfo() works fine only when wide-getaddrinfo option is not given. fixed: [ruby-dev:25422] == ext/socket/socket.c * (bsock_send) wrap the sendto and send system call by TRAP_BEG/TRAP_END to enable signals when writing to a socket which is full. [ruby-dev:27132] * (ruby_connect) revert [ruby-talk:111654] changes at 2004-09-07. [ruby-dev:26656] * sorry, BeOS also uses HAVE_CLOSESOCKET, so reverted. * should not undef close() on win32. it's defined to rb_w32_close(), otherwise handle leaks. [ruby-Bugs-2131] * (unix_send_io, unix_recv_io) support x86-64 and IA64. * (ruby_getaddrinfo__aix) merged a patch from KUBO Takehiro to support AIX. [ruby-list:40832] * workaround for some of 4.4BSD-Lite derived OSs. * document from Sam Roberts for getsockopt and setsockopt is merged. [ruby-doc:824] * (Init_socket) add bunch of Socket constants. Patch from Sam Roberts . [ruby-core:04409] * (wait_connectable, ruby_connect) support nonblocking connect on various platforms. all changes are backported from CVS HEAD. [ruby-core:3154], [ruby-core:4364]. * (Init_socket) SO_REUSEPORT added. [ruby-talk:130092] == ext/stringio/stringio.c * (strio_set_string) disallow nil. http://www.rubyist.net/~nobu/t/20050811.html#c05 * keep holding string after closed. * (strio_close, strio_close_read, strio_close_write) should return nil instead of self as well as IO. [ruby-dev:25623] * (strio_extend, strio_putc) fill with zero extended portion. [ruby-dev:25626] * (strio_truncate) should MEMZERO an extended part. [ruby-dev:25618] * (strio_set_pos) clear EOF flag. [ruby-talk:127511] == ext/strscan/strscan.c * moved misplaced rdoc. == ext/syck/emitter.c * (syck_scan_scalar) quote scalars with any kind of surrounding line space, tabs or spaces alike. * renovated emitter, walks the tree in advance. consolidated redundant block_styles struct into the scalar_style struct. (this means loaded nodes can now be sent back to emitter and preserve at least its very basic formatting.) == ext/syck/gram.c * headless documents of any kind allowed. == ext/syck/implicit.re * were 'y' and 'n' seriously omitted?? == ext/syck/node.c * (syck_replace_str) was using return from the void function. a patch from MIYAMUKO Katsuyuki . [ruby-dev:27111] * new syck_replace_str methods and syck_empty_* methods for rewriting node contents, while keeping the ID and other setup info. added syck_seq_assign. == ext/syck/rubyext.c * (syck_emitter_reset) emit headless documents always. * (syck_resolver_transfer) remove C++ style comment (//). [ruby-core:05793] * new emitter code. yaml_new and yaml_initialize get called, should they be present. consolidated all the diaspora of internal node types into the family below YAML::Syck::Node -- Map, Seq, Scalar -- all of whom are SyckNode structs pointing to Ruby data. moved Object#yaml_new into the node_import and made it the default behavior. the target_class is always called wih yaml_new, prepended a parameter, which is the klass. loaded nodes through GenericResolver show their style. new Resolver#tagurize converts type ids to taguris. * get rid of warnings caused by a bug of VC. * (syck_parser_bufsize_set) avoid VC++ warning "local variable 'size' used without having been initialized". == ext/syck/syck.h * reflect block_styles and new node functions. == ext/syck/token.c * accept tabs as whitespace, not for indentation, but strip from plain scalars. == ext/tcltklib/MANUAL.eng * add description of TclTkLib#encoding, encoding_system, and so on. == ext/tcltklib/MANUAL.euc * add description of TclTkLib#encoding, encoding_system, and so on. == ext/tcltklib/README.1st * add description of Framework support options. == ext/tcltklib/extconf.rb * Framework support on MacOS X Tiger. * bug fix; TCL_ENABLE_THREAD flag is inverted [ruby-talk:126360] * add yet another native-thread check == ext/tcltklib/stubs.c * add nativethread consistency check. * When --enable-tcltk-stubs, the initialize routine creates a Tcl/Tk interpreter and deletes it. However, init cost of Tk's MainWindow is not so small. And that makes it impossible to use libraries written with Tcl functions only on an environment without a graphical display. This changes support delaying initalization of Tk_Stubs until the script needs Tk. == ext/tcltklib/stubs.h * New file. Define prototypes and return codes of functions on stubs.c. == ext/tcltklib/tcltklib.c * remove dangerous 'rb_jump_tag's. * fixed memory leak when tk_funcall raised exception. (copies argv into heap in tk_funcall instead of caller) * refactoring - extract ruby string <-> tcl object conversion as get_str_from_obj and get_obj_from_str. * cannot compile for Tcl7.6/Tk4.2. * add nativethread consistency check. * use Tcl_[GS]etVar2Ex instead of Tcl_Obj[GS]etVar2. (avoid Tcl_NewStringObj on supported platforms) * use ip_{get,set,unset}_variable2_core from ip_{get,set,unset}_variable. * replaced Tcl_Panic with rb_bug. * refactoring - replaced rb_ivar_defined & rb_ivar_get with single rb_attr_get call. * (Tcl_GetStringResult) refactoring - define alternative macro on Tcl7.x or earlier. * (deleted_ip) refactoring - interpreter deletion check. [ruby-dev:26664] * Support delaying initalization of Tk_Stubs until the script needs Tk. * Show friendly error messages for errors on initialization. * Avoid SEGV on ip_finalize() when ruby is exiting and $DEBUG is true. (Not fix. If you know the reason of why, please fix it.) * add TclTkIp#has_mainwindow? method. * rbtk_eventloop_depth is used as int. * rbtk_pending_exception is tested with NIL_P, so should assign Qnil instead of 0 (Qfalse). * (ip_invoke_real) fixed memory leak when ip is deleted. * TclTkLib.do_one_event doesn't work. * bug fix on treating Unicode strings. * add methods to treat encoding mode. * (ip_rb_threadVwaitCommand) Tcl_Release was missing. * (ip_invoke_core) call Tcl's "::unknown" command when can't get information of target command. * (ip_RubyExitCommand) exit with status code via TclTkIp#_eval didn't work. [ruby-talk:139390] * (ip_set_exc_message) fixed memory leak. * eTkCallbackReturn was not initialized. * (ip_finalize) better modification than the previous commit [ruby-dev:26029]. * (ip_finalize) fix SEGV when Tcl_GlobalEval() modifies the argument string to eval. * (ip_finalize) add existence check of Tcl commands before calling Tcl_GlobalEval(). * (ip_finalize) adhoc patch to avoid SEGV when exit on Tcl/Tk8.3.x. * add TclTkIp#_create_console() method to create a Tcl/Tk's console window. * (lib_eventloop_ensure) mis-delete a timer handler when exit from a recursive called eventloop * fail to call TclTkLib.mainloop when $SAFE==4 * (ip_rbUpdateCommand) get rid of warnings with Tcl/Tk 8.3 or former (backport from CVS_HEAD). * (ip_rb_threadUpdateCommand) (ip_rbUpdateCommand) get rid of warnings with Tcl/Tk 8.3 or former (backport from CVS_HEAD). * (lib_eventloop_core) fix typo * enforce thread-check and exception-handling to avoid SEGV trouble. [KNOWN BUG] When supports pthread and running multiple Tk interpreters, an interrupt signal causes SEGV frequently. That may be a trouble of Ruby's signal handler. * add invalid namespace check * fix SEGV bug; trouble on canceling remained after scripts [ruby-dev:25479]: NULL current namespace when deleting Tk interpreter [ruby-talk:126225] * fix SEGV bug when deleting Tk interp == ext/tk/lib/clock.rb * fix 'no method error'. * (self.clicks) accept a Symbol argument. == ext/tk/lib/multi-tk.rb * MultiTkIp#eval_string and bg_eval_string should call Kernel.eval on caller's safe-level instead of slave's safe-level (Of course, the given script should be evaluated on slave's safe-level). * fix typo on MultiTkIp#bg_eval_string * On Tcl8.5, MultiTkIp#invoke_hidden doesn't work (gives wrong order of arguments). * add MultiTkIp#invoke_hidden_on_namespace to support '-namespace' option of 'interp invokehidden' command on Tcl8.5. * MultiTkIp#eval_string and bg_eval_string don't work propery. * fix en-bugged part in the last commit. * add MultiTkIp#has_mainwindow? method. * slave IP fail to exit itself when $SAFE==4. * remove constants from MultiTkIp module to avoid access from external. * check_root flag is ignored on slave IPs' mainloop. * hang-up Tk.mainloop called on a slave IP with $SAFE==4. * MultiTkIp#bg_eval_proc doesn't work properly. * add MultiTkIp#set_cb_error(proc) and cb_error(exc) to log errors at callbacks on safe slave IPs. * fail to get an available slave IP object when call Tk.mainloop in the block which is given to new_* method, because cannot finish initialize while the root widget is alive. * fail to control a slave IP when Tk.mainloop runs on the IP. * 2nd arg of _{to|from}UTF8 is omissible. * slave-ip fails to call procedures delegated by master-ip. * fix typo. * modify to attend encoding. * support TclTkIp#_create_console() method. * freeze callback-entry objects * enforce exception-handling. * catch IRB_EXIT to work on irb. * (bug fix) callback returns a value. * add invalid_namespace? method * avoid warning for deleted safeTk ip frame * bug fix; cannot accept a callback ID string for a command argument [ruby-dev:25479] * fix SEGV bug when deleting Tk interp == ext/tk/lib/remote-tk.rb * RemoteTkIp doesn't need to include TkUtil. * add RemoteTkIp#has_mainwindow? method. * 2nd arg of _{to|from}UTF8 is omissible. * modify to attend encoding. * support TclTkIp#_create_console() method. * add invalid_namespace? method == ext/tk/lib/tk.rb * fix bug on handling __ruby2val_optkeys(). * add __val2ruby_optkeys and __ruby2val_optkeys to help to convert option values between ruby and tcl. * configure creates TkVariable if key name is 'variable' or 'textvariable' by default. [ruby-dev:26749] * forgot to define TclTkIp.encoding and encoding= when Tcl is 7.6 or 8.0. * Forget extending Tk::Encoding module to Tk. * ext/tk/lib/tk/variable.rb: TkVarAccess fails to initialize the object for an element of a Tcl's array variable. * add Tk.has_mainwindow? method. * Tk.thread_update is available. * fail to create a Tcl's list string from an array including multiple kind of encoded strings. * override TclTkLib#encoding and encoding= to use TkCore::INTERP.encoding and encoding=. * when "require 'tk'" and $KCODE=='NONE', check DEFAULT_TK_ENCODING to decide Ruby/Tk's system encoding mode. * fix typo on Tk.grid_propagate. * Tk.event_generate and TkWindow#event_generate accept TkEvent::Event object as context argument. * add Tk.getMultiple{Open|Save}File() which return an Array of selected files. * support "tk inactive" sub-command [for Tcl/Tk8.5a3] * add shortcut-methods of tk_call + tk_split_list * TkComm#tk_split_*list fail to split a kind of SJIS strings. To avoid the trouble, add arguments to control converting encoding, and do split on a UTF8 string. * add TkWindow#lower_window/raise_window and Tk#lower_window/raise_window by reason of method-name conflict * (TkComm#array2tk_list) accept enc-mode argument to decide whether convert encoding of each element or not. * forgot to update RELEASE_DATE * (TkWindow.initialize) accept 'without_creating' option without 'widgetname' option to allow creating a widget object which is used as an argument of Tcl/Tk's widget allocation commands. * update RELEASE_DATE * (_callback_entry_class?) add for checking whether a class is available for a callback entry. * (after_cancel) add Tk.after_cancel(afterID) method. * (array2tk_list) change from private module method of TkComm to public module method. * (cget) add check that slot argument is not empty string. * (configinfo) (cget) add check that slot argument is not empty string. * catch IRB_EXIT to work on irb. * bug fix; cannot accept a callback ID string for a command argument [ruby-dev:25479] == ext/tk/lib/tk/*.rb * bug fix; cannot accept a callback ID string for a command argument [ruby-dev:25479] == ext/tk/lib/tk/autoload.rb * add autoload entry 'TkDialogObj' and 'TkWarningObj' == ext/tk/lib/tk/bindtag.rb * bug fix; new method of named bindtag doesn't return the created object [ruby-dev:25479] == ext/tk/lib/tk/canvas.rb * didn't check __item_ruby2val_optkeys(). * TkCanvas#dtag and some subcommands of TkCanvas#addtag fail to treat a TkcTag argument. * bug fix on TkCanvas#delete when given non-TkcItem arguments. * (delete) bug fix when multiple arguments. == ext/tk/lib/tk/canvastag.rb * TkcGroup.new cannot include given items. TkcGroup#exclude calls wrong method. Add alias TkcGroup#add [ruby-talk:146049]. == ext/tk/lib/tk/composite.rb * clarify the arguments of super(). == ext/tk/lib/tk/console.rb * create console when required * support TclTkIp#_create_console() method. == ext/tk/lib/tk/dialog.rb * If a dialog does not show up yet, TkDialogObj#name raises an exception. [ruby-talk:156109] * fixed typo. * use array2tk_list method when calling Tk.ip_eval. == ext/tk/lib/tk/encodedstr.rb * check both of Tk.encoding and Tk.encoding_system. Tk.encoding has higher priority. == ext/tk/lib/tk/entry.rb * add TkEntry#icursor and icursor= (alias of cursor and cursor= method). == ext/tk/lib/tk/event.rb * add TkEvent::Event#valid_fields and valid_for_generate to get field parameters of event_generate. * add TkEvent::Event#generate to help to send current event to other widgets. * use _define_attribute_aliases(). == ext/tk/lib/tk/font.rb * improve font treatment when the font name is empty string. * add some TkFont class methods to get font information without creating a TkFont object. == ext/tk/lib/tk/image.rb * support to create TkImage object without creating a new image object on Tk. * (TkImage.initialize) accept 'imagename' option to create a image object by the given name. == ext/tk/lib/tk/itemconfig.rb * fix bug on handling __item_ruby2val_optkeys(). * add __item_val2ruby_optkeys and __item_ruby2val_optkeys to help to convert option values between ruby and tcl. * configure creates TkVariable if key name is 'variable' or 'textvariable' by default. [ruby-dev:26749] * modify to attend encoding. * (itemcget) add check that slot argument is not empty string. * (itemconfiginfo) (itemcget) add check that slot argument is not empty string. == ext/tk/lib/tk/label.rb * removed its own {variable,textvariable} function. == ext/tk/lib/tk/listbox.rb * modify to attend encoding. == ext/tk/lib/tk/macpkg.rb * add PACKAGE_NAME information of Tcl/Tk Extension. == ext/tk/lib/tk/menu.rb * use TkCommandNames on create_self() * bug on treating arguments [ruby-dev:25479] == ext/tk/lib/tk/msgcat.rb * add PACKAGE_NAME information of Tcl/Tk Extension. == ext/tk/lib/tk/namespace.rb * arguemnts for TclTkIp#_merge_tklist should be UTF-8 strings. * support "namespace path" sub-command and 'namespace ensemble' sub-command [for Tcl/Tk8.5a3] * modify to attend encoding. == ext/tk/lib/tk/optiondb.rb * check both of Tk.encoding and Tk.encoding_system. Tk.encoding has higher priority. == ext/tk/lib/tk/palette.rb * define Tcl variable 'tkPalette' as global == ext/tk/lib/tk/panedwindow.rb * modify to attend encoding. == ext/tk/lib/tk/radiobutton.rb * use __ruby2val_optkeys for 'variable' option (for the reason of backward compatibility). * removed its own {variable,textvariable} function. == ext/tk/lib/tk/root.rb * support to make some methods as options of root or toplevel widget. [ruby-talk:150336] * TkRoot.to_eval() returns '.'. == ext/tk/lib/tk/spinbox.rb * clarify the arguments of super(). * check both of Tk.encoding and Tk.encoding_system. Tk.encoding has higher priority. == ext/tk/lib/tk/text.rb * clarify the arguments of super(). * modify to attend encoding. * add methods to create a TkText::IndexString from (x, y) coords. * improve TkTextMark#+ and TkTextMark#-, and add them to TkText::IndexModMethods module == ext/tk/lib/tk/textmark.rb * modify to attend encoding. * move TkTextMark#+ and TkTextMark#- to TkText::IndexModMethods == ext/tk/lib/tk/texttag.rb * modify to attend encoding. == ext/tk/lib/tk/timer.rb * fix typo. * (TkTimer) forgot to clear @return_value when restarting * (TkRTTimer) forgot to reset the callback time. So, 'continue' do all callbacks between 'stop' and 'continue'. * (TkRTTimer) correct calculation of offset value. get a little better accuracy. * new TkRTTimer class, which can works for a realtime operation == ext/tk/lib/tk/toplevel.rb * support to make some methods as options of root or toplevel widget. [ruby-talk:150336] == ext/tk/lib/tk/validation.rb * clarify the arguments of super(). * check both of Tk.encoding and Tk.encoding_system. Tk.encoding has higher priority. == ext/tk/lib/tk/variable.rb * retains backward conpatibility. * TkVariable#trace didn't work on TkVariable retrived from TkVariable.new_hash.ref. [ruby-dev:26721] * For symmetry, add TkVariable#string. It returns a string even if the default value type of the TkVariable object is not "string". * modify to attend encoding. * (TkVariable#value=) fail to convert the encoding of array elements when assign an array to an TkVariable object. * fix namespace trouble when autoloading * add :variable, :window and :procedure type. * improve treatment of array-type tkvariable. == ext/tk/lib/tk/winfo.rb * modify to attend encoding. == ext/tk/lib/tk/winpkg.rb * add PACKAGE_NAME information of Tcl/Tk Extension. == ext/tk/lib/tk/wm.rb * support to make some methods as options of root or toplevel widget. [ruby-talk:150336] == ext/tk/lib/tkextlib/* * support to treat tkvariable-type configure options. * add PACKAGE_NAME information of Tcl/Tk Extension. == ext/tk/lib/tkextlib/*.rb * bug fix; cannot accept a callback ID string for a command argument [ruby-dev:25479] == ext/tk/lib/tkextlib/SUPPRT_STATUS * update RELEASE_DATE == ext/tk/lib/tkextlib/blt.rb * add commands for zooming. == ext/tk/lib/tkextlib/blt/* * bug fix. == ext/tk/lib/tkextlib/blt/component.rb * didn't check __item_ruby2val_optkeys(). == ext/tk/lib/tkextlib/iwidgets/scrolledcanvas.rb * bug fix on TkCanvas#delete when given non-TkcItem arguments. == ext/tk/lib/tkextlib/iwidgets/scrolledlistbox.rb * modify to attend encoding. == ext/tk/lib/tkextlib/iwidgets/scrolledtext.rb * modify to attend encoding. == ext/tk/lib/tkextlib/tclx/tclx.rb * add Tk::TclX.signal to warn the risk of using TclX extension's 'signal' command. == ext/tk/lib/tkextlib/tile.rb * support tile-0.6 == ext/tk/lib/tkextlib/tile/ * add demo and update support status. == ext/tk/lib/tkextlib/treectrl/tktreectrl.rb * bug fix and add methods to call TreeCtrl commands for bindings. * bug fix and define some classes for components of Tk::TreeCtrl == ext/tk/lib/variable.rb * be able to set default_value_type; :numeric, :bool, :string, :symbol, :list, :numlist or nil (default; same to :string). If set a type, TkVariable#value returns a value of the type. == ext/tk/tcltklib.c * wrap Tcl's original "namespace" command to protect from namespace crash. * add TclTkLib.mainloop_thread? == ext/tk/tkutil.c * (ary2list, ary2list2) bug fix on handling of encoding. * (tk_conv_args) forget to revert thread_critical and gc_disable when raise ArgumentError. * fix typo. * fail to create a Tcl's list string from an array including multiple kind of encoded strings. * add TkUtil::CallbackSubst.subst_arg(m, ...) & _define_attribute_aliases(hash) to get substitution-argument from attributes (e.g. subst_arg(:x,:y,:num,:button) --> "%x %y %b %b "). * (ary2list) give wrong arguments to hash2kv() * remove the some codes which depend on the difference between Ruby1.8 and 1.9, because st.c on Ruby1.9 was changed. * Follow the change of st.c (st_foreach) [ruby-list:40623]. Sometimes mis-convert from a Ruby's Array of SJIS Strings, which includes some kind of SJIS characters, to a Tcl's UTF8 list string. * fix SEGV bug; NULL string pointer when finalize Ruby interpreter == ext/tk/tkutil/tkutil.c * fix a bug on converting a SJIS string array to a Tcl's list string. == ext/win32ole/tests/testOLEEVENT.rb * (WIN32OLE_EVENT#on_event) should set only one event handler. == ext/win32ole/tests/testOLEPARAM.rb * remove re-defined test_ole_type_detail method. == ext/win32ole/win32ole.c * (ole_search_event_at) bug fix in ext/win32ole/sample/ienavi.rb. * (WIN32OLE_EVENT#on_event) should set only one event handler. * (ole_method_dispid) convert dispid in Ruby and C by INT2NUM and NUM2INT. * (ole_invoke2) (ole_method_dispid) convert dispid in Ruby and C by INT2NUM and NUM2INT. * (ole_invoke) retry after converting Qnil to VT_EMPTY. == ext/win32ole/win32ole/tests/testOLEEVENT.rb * (ole_search_event_at) bug fix in ext/win32ole/sample/ienavi.rb. == ext/win32ole/win32ole/tests/testWIN32OLE.rb * correct error message string "Unknown" => "unknown". == ext/zlib/zlib.c * (zstream_run) fixed SEGV. [ruby-core:4712] * (zstream_end) should return value. (backported from CVS HEAD) * (rb_deflate_s_deflate, rb_inflate_s_inflate) ensure freeing internal zstreams. fixed: [ruby-dev:25309] * (rb_deflate_init_copy) replace rb_deflate_clone. == lib/cgi-lib.rb * add deprecation warning. [ruby-dev:25499] getopts.rb, parsearg.rb, importenv.rb as well. == lib/cgi.rb * (CGI::Cookie) should handle multiple values for a cookie name. [ruby-talk:156140] * (CGI::Cookie) [ruby-talk:130040] == lib/date.rb * (new_with_hash) changed messages of exception. == lib/date/format.rb * (strftime, strptime) undocumented conversion specifications %[1-3] are now deprecated. == lib/debug.rb * (debug_command) added a deficient format specifier. fixed: [ruby-core:05419] == lib/delegate.rb * (Delegator::respond_to) respond_to? must check destination object. [ruby-talk:146894] * (Delegator::method_missing) forward unknown method to the destination. suggested by . [ruby-talk:146776] * (SimpleDelegator::__setobj__) need check for recursive delegation. [ruby-core:04940] == lib/drb/drb.rb * (check_insecure_method) use private_methods and protected_methods instead of respond_to? to check method visibility. [ruby-dev:26616] * (DRbObject#method_missing) use raise(exception). [ruby-dev:26164] * [druby-ja:123] fix: When reference of my object is loaded, the object is tainted. * move method DRbObject#reinit to DRbObject.new_with. extract method DRbObject.prepare_backtrace. add DRb.regist_server, remove_server, fetch_server. change server in thread variable if in-proc server. [druby-ja:113] * (DRbObject#respond_to?) take two arguments. [ruby-dev:25722] * (DRbServer.default_safe_level) fix typo. * add lazy stop_service. ([druby-ja:109]) * (InvokeMethod.perform) pass DRb info to sub thread. * (DRbServer) add default_safe_level, safe_level, config[:safe_level] ([druby-ja:120]) * reject :instance_eval, :class_eval, :module_eval [druby-ja:117] * (DRb::DRbObject#respond_to?) check marshal_dump and _dump. == lib/drb/extserv.rb * add lazy stop_service. ([druby-ja:109]) == lib/drb/gw.rb * move method DRbObject#reinit to DRbObject.new_with. extract method DRbObject.prepare_backtrace. add DRb.regist_server, remove_server, fetch_server. change server in thread variable if in-proc server. [druby-ja:113] == lib/drb/ssl.rb * (accept) rescue SSLError. [druby-ja:110] == lib/drb/unix.rb * fail if UNIXFileOwner is set. [druby-ja:111] == lib/erb.rb * (ERB::Util.h, u) make it module_function. == lib/fileutils.rb * (remove_file) ignore exceptions caused by chmod. * (remove_dir) try to get rights to rmdir. [ruby-Bugs:1502] (2 items backportted from HEAD, rev 1.53-54) * (copy_entry) could not copy symbolic link. [ruby-talk:125733] * (copy_stream) use read/write instead of sysread/syswrite. * (mv) should raise error when moving a directory to the (empty) directory. [ruby-talk:124368] (backport from HEAD 1.48) * (mv) wrongly did not overwrite file on Win32 platforms. (backport from HEAD 1.48) == lib/ftools.rb * (File.safe_unlink) do not modify a symlinked file. == lib/getopts.rb * should warn only if verbose mode. fixed: [ruby-dev:26201] == lib/ipaddr.rb * (to_s, test_to_s) too many colons with some cases. (backported from CVS HEAD) == lib/irb.rb lib/irb/* doc/irb * IRB 0.9.5 == lib/irb/context.rb * fix `irb --readline` option. [ruby-list:40955] * (IRB::Context::initialize) [ruby-core:04330] == lib/irb/ext/history.rb * (IRB::Context::set_last_value) (IRB::ContextExtender.def_extend_command) suppress warnings. * (IRB::Context::eval_history) (IRB::Context::set_last_value) (IRB::ContextExtender.def_extend_command) suppress warnings. == lib/irb/extend-command.rb * (IRB::ContextExtender.def_extend_command) suppress warnings. == lib/irb/init.rb * make IRB -I option that is same befavior for ruby. [ruby-dev:26872], [ruby-dev: 26920] * (IRB::IRB.rc_file_generators) more flexible IRB.rc_file_generators. [ruby-core:05163] == lib/irb/input-method.rb * do not use Readline::HISTORY.pop. (backported from HEAD) == lib/irb/locale.rb * support to print help message when OS locale is ja_JP.utf-8. [ruby-dev:26872] * (IRB::Locale::real_load) (IRB::Context::eval_history) (IRB::Context::set_last_value) (IRB::ContextExtender.def_extend_command) suppress warnings. == lib/irb/ruby-lex.rb * (RubyLex::identify_number) alternative implements for [ruby-dev:26410]. And support a numeric form of 0d99999. * (RubyLex::identify_number) should not treat plain zero as an octal number. [ruby-dev:26410] == lib/irb/slex.rb * (SLex::Node::create_subnode) remove garbage. == lib/logger.rb * (Logger) added formatter accessor to logger for dictating the way in which the logger should format the messages it displays. Thanks to Nicholas Seckar (cf. [ruby-talk:153391]) and Daniel Berger. * (Logger) added VERSION constant. * removed document for LogDevice. It is an implementation detail and is not a public interface. * (write, shift_log?, shift_log) file shifting race condition bug fixed. [ruby-dev:26764] == lib/mathn.rb * (Rational::inspect) should preserve original operand. [ruby-core:05806] == lib/mkmf.rb * (what_type?) guesstimate type. * (xsystem, xpopen) no longer expand by Config. * (link_command, cc_command, cpp_command) expand variables at once, and quote hdrdir. fixed: [ruby-core:05680] * (libpathflag) quote paths. * (create_makefile) need to convert path separetor before invoking install command. * keep curdir unexpanded. * (create_makefile) add .SUFFIXES from depend file. fixed: [ruby-dev:26294] * use the semicolon as the path separator in the environment of MSYS. fixed: [ruby-dev:26232] * (create_makefile) quote topdir and hdrdir if necessary. fixed: [ruby-core:04932] * (configuration) make also INSTALL_PROG and INSTALL_DATA system dependent. fixed: [ruby-core:04931] * (have_var) no libs argument is given. * (create_makefile) support platforms have file separator other than /. * (configuration) shouldn't output hdrdir twice. * (configuration, create_makefile) get rid of recursive macro reference. * (configuration, create_makefile) (extmake) keep directory names in Makefile as macros. * (CXX_EXT) separate C++ extensions. * (configuration, create_makefile) correct configuration variable. * (create_makefile) ensure library directories get made before copying libraries there. * (SRC_EXT) exclude just case different suffixes on case insensitive file system platforms. * backport extout. [ruby-dev:25963] * (macro_defined?) try to compile for an old compiler which doesn't bail out at #error directive. [ruby-dev:25818] * (check_sizeof) refine logging messages. * (mkmf_failed) check if Makefile is created without create_makefile. * (create_makefile) should support header files in depend file. * ($extmk) check if under ext directory. * (Logging.postpone) allow recursive operation. * (try_constant) make sure if really a constant, reduce the number of times of compile. * (have_macro, have_var, byte_order) new functions. * (find_library) allow directory list with separators. * (arg_config) manage provided configuration options. * (dir_config) accept arrays of directory names as default values. * (create_makefile) fix unbalanced parens. == lib/net/http.rb * #use_ssl?, #use_ssl are moved from net/https. * backported from trunk, rev 1.128. [ruby-dev:25673] [ruby-dev:26617] * HTTPHeader holds its header fields as an array (backport from CVS HEAD rev 1.112-1.123). [ruby-list:40629] == lib/net/https.rb * backported from trunk, rev 1.3. [ruby-dev:25673] (again), [ruby-dev:26617] (again), [ruby-dev:27062] == lib/net/imap.rb * (initialize) handle certs correctly. Thanks, NABEYA Kenichi. (backported from CVS HEAD) * (u8tou16) fixed typo. fixed: [ruby-list:40546] (backported from CVS HEAD) == lib/net/pop.rb * use #old_open. == lib/net/protocol.rb * backported from trunk, rev 1.78. * new method #old_open to support net/smtp and net/pop. * (WriteAdapter#puts) should append \n, not prepend. [ruby-talk:128302] (backport from HEAD, rev 1.75) == lib/net/smtp.rb * use #old_open. == lib/net/telnet.rb * (Net::Telnet::waitfor) replace sysread with readpartial. [ruby-talk:127641] == lib/open-uri.rb * abolish mod === tempfile to avoid a problem [ruby-dev:26967]. * (OpenURI.open_http) refine post_connection_check call. * (OpenURI::Meta::RE_QUOTED_STRING) a content of quoted-string should be zero or more characters. * (URI::FTP#buffer_open) access mechanism re-implemented according to RFC 1738. reported by Guillaume Marcais. [ruby-talk:131650] * call OpenSSL::SSL::SSLSocket#post_connection_check after connection is made. * (OpenURI.open_loop) send authentication only for the URI directly specified. * support https if the platform provides CA certificates. * (URI::HTTP#proxy_open) new option supported: :http_basic_authentication. suggested by Kent Sibilev. [ruby-core:4392] == lib/open3.rb * (Open3::popen3) $? should not be EXIT_FAILURE. fixed: [ruby-core:04444] == lib/ostruct.rb * a patch from Florian Gross merged to allow recursive inspect (and to_s) for OpenStruct. [ruby-core:05532] == lib/pathname.rb * (Pathname#unlink) try Dir.unlink first to avoid unlink a directory by root. cf. [ruby-dev:26237] * (Pathname#unlink) use SystemCallError instead of Errno::EISDIR because EISDIR is not portable. [ruby-core:5001] * (Pathname#unlink) unlink a symlink to a directory was failed. [ruby-core:4992] == lib/ping.rb * (Ping.pingecho) should rescue StandardError. [ruby-dev:26677] == lib/pp.rb * rdoced. [ruby-core:4490] * (File::Stat#pretty_print) Etc.getpwuid and Etc.getgrgid may return nil. [ruby-talk:129826] reported by Daniel Berger. == lib/profiler.rb * fixed "undefined method `[]' for nil:NilClass" [ruby-core:4775] [ruby-talk:140401] [ruby-dev:26118] == lib/rdoc/generators/html_generator.rb * [ruby-core:04412] == lib/rdoc/generators/ri_generator.rb * [ruby-core:04412] == lib/rdoc/generators/template/html/kilmer.rb * Update to use new sections. == lib/rdoc/parsers/parse_c.rb * (handle_class_module) handle a module enclosed in a built-in module. fixed: [ruby-talk:148239] * (find_body) allow macros as methods. * (find_call_seq) allow :nodoc: modifier in C. [ruby-core:04572] * more readability for mixing progress "c..." and warning message. * show parsing progress for C files. [ruby-core:4341] * (RDoc::C_Parser#do_includes) replace also locally defined modules. * allow whitespace after function names. [ruby-core:4296] * adds support for constants (rb_define_const), accessors (rb_define_attr), and makes a couple fixes. [ruby-core:4307] == lib/rdoc/parsers/parse_rb.rb * Logic for def Builtin.method() end [ruby-core:4302] == lib/rdoc/parsers/parse_simple.rb * adds support for private comments in the "simple" parser. [ruby-core:4301] == lib/rdoc/ri/ri_formatter.rb * (RI::TextFormatter::display_flow_item) Fix problem if heading contains formatting. == lib/rdoc/usage.rb * improper exceptions. [ruby-dev:26870] * support the case when non-ruby code exists before shebang. (this is needed when ri.bat is executed on windows) * (RDoc::RDoc.usage_no_exit) Allow for colons in path names on DOS machines. (thanks to Johan Nilsson) == lib/resolv.rb * (Resolv::DNS::Name#subdomain_of?) (CGI::Cookie) [ruby-talk:130040] * (Resolv::DNS::Resource::TXT) (rb_reg_init_copy, rb_reg_initialize_m) One too many arguments are passed to rb_reg_initialize(). * (Resolv::DNS::Resource::IN::SRV) Added RFC2782 SRV resource record for specifying location of services. * (Resolv::DNS::Config.parse_resolv_conf) (Resolv::DNS::Resource::IN::SRV) Added RFC2782 SRV resource record for specifying location of services. * (Resolv::DNS::Config.resolv) don't raise ResolvError. reported by Sam Roberts. [ruby-talk:127133] * (Resolv::DNS::Config.parse_resolv_conf) ignore domain and search directive without an argument. reported by Sam Roberts. [ruby-talk:126781] == lib/rexml/encodings/SHIFT-JIS.rb * encoding and decoding were swapped. [ruby-core:4772] == lib/rinda/tuplespace.rb * (Rinda::TemplateEntry::initialize) pull up method. Tabs converted to spaces. * (Rinda::TupleSpace) improved keeper thread. == lib/rss * fixed sort bug. [ruby-list:41018] * backoported from HEAD. * refactored. - gave a name to 'x'. - undef_method -> remove_method for avoiding a warning in ruby 1.6. * supported Image module. http://web.resource.org/rss/1.0/modules/image/ == lib/rss.rb * added for convenience. == lib/rss/0.9.rb * (RSS::Rss::Channel::Item::Category) domain attribute of is optional. Thanks to Chris Lee . * swapped the first argument and the second argument for RSS::BaseListener.install_get_text_element. * (RSS::Rss::Channel#date, RSS::Rss::Channel#date=) (RSS::DublicCoreModel#date, RSS::DublicCoreModel#date=) added convenient methods. * convert -> need_convert. == lib/rss/1.0.rb * (RSS::RDF::Channel#setup_maker_attributes) removed self. * swapped the first argument and the second argument for RSS::BaseListener.install_get_text_element. * convert -> need_convert. == lib/rss/2.0.rb * swapped the first argument and the second argument for RSS::BaseListener.install_get_text_element. * (RSS::Rss::Channel::Item#date, RSS::Rss::Channel::Item#date=) (RSS::Rss::Channel#date, RSS::Rss::Channel#date=) (RSS::DublicCoreModel#date, RSS::DublicCoreModel#date=) added convenient methods. * convert -> need_convert. == lib/rss/content.rb * swapped the first argument and the second argument for RSS::BaseListener.install_get_text_element. == lib/rss/dublincore.rb * swapped the first argument and the second argument for RSS::BaseListener.install_get_text_element. * supported multiple Dublin Core items. * (RSS::DublicCoreModel#date, RSS::DublicCoreModel#date=) added convenient methods. == lib/rss/image.rb * swapped the first argument and the second argument for RSS::BaseListener.install_get_text_element. == lib/rss/maker/1.0.rb * (RSS::Maker::RSS10::Channel#to_rss, RSS::Maker::RSS10::Items::Item#to_rss) cleared dc_dates set upped by using #date. == lib/rss/maker/base.rb * (RSS::Maker::ItemsBase#normalize) fixed strange RSS::Maker::Item#max_size behavior. Thanks to Kazuhiko . * (RSS::Maker::ItemsBase#<=>) use #date instead of @date. (RSS::Maker::Base::self.def_array_element): added #size. * added default current_element implementation. == lib/rss/maker/dublincore.rb * (RSS::Maker::ChannelBase, RSS::Maker::ItemsBase::ItemBase) fixed opposite alias. * supported multiple Dublin Core items. == lib/rss/maker/image.rb * supproted new Dublin Core API. * fixed invalid argument of add_need_initialize_variable bug. == lib/rss/maker/trackback.rb * fixed invalid argument of add_need_initialize_variable bug. == lib/rss/parser.rb * (RSS::Parser#initialize) accept HTTP/FTP URI and local file path too. * @@setter -> @@setters. * (RSS::BaseListener.register_uri, RSS::BaseListener.uri_registered?, RSS::BaseListener.install_get_text_element) swapped the first argument and the second argument. * swapped the first argument and the second argument for RSS::BaseListener.install_get_text_element. * (RSS::BaseListener.install_setter, RSS::BaseListener.register_uri) changed fallback way. * added class name registry for complex model elements. (ex. have childlen elements, have some attributes and a child element and so on.) * (RSS::ListenerMixin::tag_end) fixed invalid namespace handling bug. == lib/rss/rss.rb * moved copyright description to lib/rss.rb. * (RSS::VERSION) 0.1.4 -> 0.1.5. * (RSS::VERSION) 0.1.3 -> 0.1.4. * (RSS::Element#converter) fixed converter transmission bug. * (Hash#merge) added for ruby 1.6. * (RSS::BaseModel.date_writer) changed to accept nil for date value. * (RSS::Element#convert) added. * convert -> need_convert. * (RSS::VERSION) 0.1.2 -> 0.1.3. * accept inheritance. [ruby-talk:126104] == lib/rss/syndication.rb * swapped the first argument and the second argument for RSS::BaseListener.install_get_text_element. == lib/rss/taxonomy.rb * swapped the first argument and the second argument for RSS::BaseListener.install_get_text_element. == lib/rss/trackback.rb * (RSS::TrackBackUtils.new_with_value_if_need) moved to RSS::Utils. * convert -> need_convert. == lib/rss/utils.rb * (RSS::Utils.new_with_value_if_need) moved from RSS::TrackBackUtils. == lib/set.rb * (SortedSet::setup) a hack to shut up warning. [ruby-talk:132866] == lib/soap * imported soap4r/1.5.5. #nnn is a ticket number at http://dev.ctor.org/soap4r * SOAP * allow to configure an envelope namespace of SOAP request. (#124) TemporaryNamespace = 'http://www.w3.org/2003/05/soap-envelope' @client.options["soap.envelope.requestnamespace"] = TemporaryNamespace @client.options["soap.envelope.responsenamespace"] = TemporaryNamespace @client.do_proc(...) * let SOAP request XML indent space configuable. see "soap.envelope.no_indent" option. (#130) * let external CES configuable. ex. client["soap.mapping.external_ces"] = 'SJIS'. $KCODE is used by default. (#133) external CES ::= CES used in Ruby object of client and server internal CES ::= CES used in SOAP/OM * add iso-8859-1 external CES support. (#106) * fixed illegal 'qualified' handling of elements. it caused ASP.NET inteoperability problem. (#144) * added 'soap.envelope.use_numeric_character_reference' (boolean) option to let query XML use numeric character reference in XML, not plain UTF-8 character. !GoogleSearch server seems to not allow plain UTF-8 character since 2005-08-15 update. (#147) * SOAP::Header::SimpleHeader (de)serialization throws an exception on !SimpleHeader.on_(in|out)bound when header is a String. so we could not use a simple single element headerItem. fixed. thanks to emil. (#129) * out parameter of rpc operation did not work. (#132) * follow HTTP redirect only if using http-access2. (#125) (#145) * add a workaround for importing an WSDL whose path begins with drive letter. (#115) * WSDL * SOAP Data which is defined as a simpletype was not mapped correctly to Ruby obj when using wsdl2ruby.rb generated classdef file. (#123) * rpc/literal support. (#118) * re-implemented local element qualify/unqualify control. handles elementFormDefault and form in WSDL. (#119) * Array of an element which has simpleType causes a crash. (#128) * prarmeterOrder may not contain return part so it can be shorter than parts size. Thanks to Hugh. (#139) * Samples * added !BasicAuth client sample. (#117) * added Base64 client/server sample. * added Flickr SOAP interface client sample. (#122) * added !SalesForce client sample. (#135) * updated Thawte CA certificate for !GoogleAdWords sample. * updated a client script with the newer version made by Johan. thanks! * shortened long file names. (#120) * fixed typo in authheader sample. (#129) * updated deprecated method usage. (#138) * imported soap4r/1.5.4. == SOAP client and server == === for both client side and server side === * improved document/literal service support. style(rpc,document)/use(encoding, literal) combination are all supported. for the detail about combination, see test/soap/test_style.rb. * let WSDLEncodedRegistry#soap2obj map SOAP/OM to Ruby according to WSDL as well as obj2soap. closes #70. * let SOAP::Mapping::Object handle XML attribute for doc/lit service. you can set/get XML attribute via accessor methods which as a name 'xmlattr_' prefixed ( -> Foo#xmlattr_name). === client side === * WSDLDriver capitalized name operation bug fixed. from 1.5.3-ruby1.8.2, operation which has capitalized name (such as KeywordSearchRequest in AWS) is defined as a method having uncapitalized name. (converted with GenSupport.safemethodname to handle operation name 'foo-bar'). it introduced serious incompatibility; in the past, it was defined as a capitalized. define capitalized method as well under that circumstance. * added new factory interface 'WSDLDriverFactory#create_rpc_driver' to create RPC::Driver, not WSDLDriver (RPC::Driver and WSDLDriver are merged). 'WSDLDriverFactory#create_driver' still creates WSDLDriver for compatibility but it warns that the method is deprecated. please use create_rpc_driver instead of create_driver. * allow to use an URI object as an endpoint_url even with net/http, not http-access2. === server side === * added mod_ruby support to SOAP::CGIStub. rename a CGI script server.cgi to server.rb and let mod_ruby's RubyHandler handles the script. CGIStub detects if it's running under mod_ruby environment or not. * added fcgi support to SOAP::CGIStub. see the sample at sample/soap/calc/server.fcgi. (almost same as server.cgi but has fcgi handler at the bottom.) * allow to return a SOAPFault object to respond customized SOAP fault. * added the interface 'generate_explicit_type' for server side (CGIStub, HTTPServer). call 'self.generate_explicit_type = true' if you want to return simplified XML even if it's rpc/encoded service. == WSDL == === WSDL definition === * improved XML Schema support such as extension, restriction, simpleType, complexType + simpleContent, ref, length, import, include. * reduced "unknown element/attribute" warnings (warn only 1 time for each QName). * importing XSD file at schemaLocation with xsd:import. === code generation from WSDL === * generator crashed when there's '-' in defined element/attribute name. * added ApacheMap WSDL definition. == lib/soap/wsdlDriver.rb * from 1.5.3-ruby1.8.2, operation which has capitalized name (such as KeywordSearchRequest in AWS) is defined as a method having uncapitalized name. (converted with GenSupport.safemethodname to handle operation name 'foo-bar'). it introduced serious incompatibility; in the past, it was defined as a capitalized. == lib/tempfile.rb * (Tempfile#unlink) fixed typo. == lib/thread.rb * RDoc documentation from Eric Hodel added. [ruby-core:05148] == lib/time.rb * (Time.parse) extract fractional seconds using Date._parse. [ruby-talk:153859] * (Time.apply_offset) fix a problem with last day of month. reported by Lucas Nussbaum. [ruby-talk:152866] * (Time.parse) (rb_gc_call_finalizer_at_exit) deferred finalizers list should be cleared before calling them. fixed: [ruby-talk:145790] * (Time.parse) add Tk.getMultiple{Open|Save}File() which return an Array of selected files. * recognize +00:00 and GMT as a localtime. == lib/un.rb * should use OptionParser. (backported form HEAD) == lib/uri/common.rb * fixed typo in documents and replaced some existent domain name with "example.com". * (PORT) typo fix. fixed: [ruby-core:04256] == lib/uri/generic.rb * fixed typo in documents and replaced some existent domain name with "example.com". * (split_userinfo) should split ":pass" into "" and "pass". [ruby-dev:25667] == lib/webrick/cgi.rb * (WEBrick::CGI::Socket#initialize) should set $stdout.binmode. * (WEBrick::CGI::Socket#request_line) mistook in merging the patch of [ruby-dev:26235] at revision 1.4.2.6. * (WEBrick::CGI::Socket#request_line) ENV["REQUEST_URI"] is better to get correct Request-URI than ENV["SCRIPT_NAME"] + ENV["PATH_INFO"]. [ruby-dev:26235] * new methods WEBrick::CGI#[], WEBrick::CGI#logger and WEBrick::CGI#config. (backported from HEAD) * (WEBrick::CGI.start) should set reason-phrase to the value of status header field. ([ruby-dev:40617]) * (WEBrick::CGI::Socket#request_line) should escape SCRIPT_NAME and PATH_INFO before being parsed as a URI. == lib/webrick/httpauth.rb * use pack/unpack-template char "m" instead of lib/base64.rb to do base64 encoding/decoding. fixed: [ruby-dev:25336] == lib/webrick/httpauth/basicauth.rb * use pack/unpack-template char "m" instead of lib/base64.rb to do base64 encoding/decoding. fixed: [ruby-dev:25336] == lib/webrick/httpauth/digestauth.rb * (WEBrick::HTTPAuth::DigestAuth#_authenticate) fix digest calculation. This patch is contributed by sheepman. [ruby-list:40482] == lib/webrick/httpauth/htpasswd.rb * (WEBrick::Htpasswd#reload) raise NotImplementedError if password is encrypted by digest algorithms. This patch is contributed by sheepman. [ruby-list:40467] == lib/webrick/httpproxy.rb * (WEBrick::HTTPProxyServer#proxy_service) should delete trailing LF from the result of pack("m*"). * (WEBrick::HTTPProxyServer#proxy_connect) - should delete trailing LF from the result of pack("m*"). - clear Request-Line not to send the response by HTTPServer#run. * use pack/unpack-template char "m" instead of lib/base64.rb to do base64 encoding/decoding. fixed: [ruby-dev:25336] == lib/webrick/httprequest.rb * (WEBrick::HTTPRequest#read_chunked) should call sock.read repeatedly until the preferred size data is obtained. == lib/webrick/httpserver.rb * (WEBrick::HTTPServer#run) should break the loop if the socket reached to EOF. [ruby-talk:142285] == lib/webrick/httputils * (WEBrick::HTTPUtils.parse_qvalues) refine regexp (and change the name of a local variable). == lib/webrick/httputils.rb * (WEBrick::HTTPUtils.parse_query) should discard if key=val pair is empty. patch from Gary Wright. * (WEBrick::HTTPUtils.escape_path) should not use String#split("/"). (backported from HEAD) * (WEBrick::HTTPUtils#escape_path) add new method to escape URI path component. == lib/webrick/server.rb * (WEBrick::GenericServer#accept_client) sockets should be non-blocking mode. [ruby-dev:26405] * (WEBrick::GenericServer#initialize) if :Port parameter is 0, it should be updated with the port number which actually listened. * (WEBrick::GenericServer#start) should restore @token if accept failure. suggested by Dominique Brezinski. [ruby-core:04518] * (WEBrick::Daemon.start) prepared stdio don't allow changing its mode. == lib/webrick/ssl.rb * (WEBrick::Config::SSL) the default value of :SSLEnable is false. == lib/webrick/utils.rb * (WEBrick::Utils.set_non_blocking) new method. * (WEBrick::Utils.create_listeners) - should raise ArgumentError if no port is specified. - even if the specified port is 0, all TCPServers should be initialized with the port given to the first one. == lib/wsdl * imported soap4r/1.5.5. #nnn is a ticket number at http://dev.ctor.org/soap4r * SOAP * allow to configure an envelope namespace of SOAP request. (#124) TemporaryNamespace = 'http://www.w3.org/2003/05/soap-envelope' @client.options["soap.envelope.requestnamespace"] = TemporaryNamespace @client.options["soap.envelope.responsenamespace"] = TemporaryNamespace @client.do_proc(...) * let SOAP request XML indent space configuable. see "soap.envelope.no_indent" option. (#130) * let external CES configuable. ex. client["soap.mapping.external_ces"] = 'SJIS'. $KCODE is used by default. (#133) external CES ::= CES used in Ruby object of client and server internal CES ::= CES used in SOAP/OM * add iso-8859-1 external CES support. (#106) * fixed illegal 'qualified' handling of elements. it caused ASP.NET inteoperability problem. (#144) * added 'soap.envelope.use_numeric_character_reference' (boolean) option to let query XML use numeric character reference in XML, not plain UTF-8 character. !GoogleSearch server seems to not allow plain UTF-8 character since 2005-08-15 update. (#147) * SOAP::Header::SimpleHeader (de)serialization throws an exception on !SimpleHeader.on_(in|out)bound when header is a String. so we could not use a simple single element headerItem. fixed. thanks to emil. (#129) * out parameter of rpc operation did not work. (#132) * follow HTTP redirect only if using http-access2. (#125) (#145) * add a workaround for importing an WSDL whose path begins with drive letter. (#115) * WSDL * SOAP Data which is defined as a simpletype was not mapped correctly to Ruby obj when using wsdl2ruby.rb generated classdef file. (#123) * rpc/literal support. (#118) * re-implemented local element qualify/unqualify control. handles elementFormDefault and form in WSDL. (#119) * Array of an element which has simpleType causes a crash. (#128) * prarmeterOrder may not contain return part so it can be shorter than parts size. Thanks to Hugh. (#139) * Samples * added !BasicAuth client sample. (#117) * added Base64 client/server sample. * added Flickr SOAP interface client sample. (#122) * added !SalesForce client sample. (#135) * updated Thawte CA certificate for !GoogleAdWords sample. * updated a client script with the newer version made by Johan. thanks! * shortened long file names. (#120) * fixed typo in authheader sample. (#129) * updated deprecated method usage. (#138) * imported soap4r/1.5.4. == SOAP client and server == === for both client side and server side === * improved document/literal service support. style(rpc,document)/use(encoding, literal) combination are all supported. for the detail about combination, see test/soap/test_style.rb. * let WSDLEncodedRegistry#soap2obj map SOAP/OM to Ruby according to WSDL as well as obj2soap. closes #70. * let SOAP::Mapping::Object handle XML attribute for doc/lit service. you can set/get XML attribute via accessor methods which as a name 'xmlattr_' prefixed ( -> Foo#xmlattr_name). === client side === * WSDLDriver capitalized name operation bug fixed. from 1.5.3-ruby1.8.2, operation which has capitalized name (such as KeywordSearchRequest in AWS) is defined as a method having uncapitalized name. (converted with GenSupport.safemethodname to handle operation name 'foo-bar'). it introduced serious incompatibility; in the past, it was defined as a capitalized. define capitalized method as well under that circumstance. * added new factory interface 'WSDLDriverFactory#create_rpc_driver' to create RPC::Driver, not WSDLDriver (RPC::Driver and WSDLDriver are merged). 'WSDLDriverFactory#create_driver' still creates WSDLDriver for compatibility but it warns that the method is deprecated. please use create_rpc_driver instead of create_driver. * allow to use an URI object as an endpoint_url even with net/http, not http-access2. === server side === * added mod_ruby support to SOAP::CGIStub. rename a CGI script server.cgi to server.rb and let mod_ruby's RubyHandler handles the script. CGIStub detects if it's running under mod_ruby environment or not. * added fcgi support to SOAP::CGIStub. see the sample at sample/soap/calc/server.fcgi. (almost same as server.cgi but has fcgi handler at the bottom.) * allow to return a SOAPFault object to respond customized SOAP fault. * added the interface 'generate_explicit_type' for server side (CGIStub, HTTPServer). call 'self.generate_explicit_type = true' if you want to return simplified XML even if it's rpc/encoded service. == WSDL == === WSDL definition === * improved XML Schema support such as extension, restriction, simpleType, complexType + simpleContent, ref, length, import, include. * reduced "unknown element/attribute" warnings (warn only 1 time for each QName). * importing XSD file at schemaLocation with xsd:import. === code generation from WSDL === * generator crashed when there's '-' in defined element/attribute name. * added ApacheMap WSDL definition. == lib/wsdl/xmlSchema/importer.rb * (WSDL::XMLSchema::Importer#fetch) add a workaround for importing an WSDL whose path begins with drive letter. [ruby-dev:26242] == lib/xmlrpc/* * backported changes from HEAD into 1.8 == lib/xmlrpc/parser.rb * (XMLRPC::FaultException) make it subclass of StandardError class, not Exception class. [ruby-core:04429] == lib/xmlrpc/server.rb * (XMLRPC::Server) Switch from GServer over to WEBrick. This makes file lib/xmlrpc/httpserver.rb obsolete (at least it is no further used by the XML-RPC library). == lib/xsd * imported soap4r/1.5.5. #nnn is a ticket number at http://dev.ctor.org/soap4r * SOAP * allow to configure an envelope namespace of SOAP request. (#124) TemporaryNamespace = 'http://www.w3.org/2003/05/soap-envelope' @client.options["soap.envelope.requestnamespace"] = TemporaryNamespace @client.options["soap.envelope.responsenamespace"] = TemporaryNamespace @client.do_proc(...) * let SOAP request XML indent space configuable. see "soap.envelope.no_indent" option. (#130) * let external CES configuable. ex. client["soap.mapping.external_ces"] = 'SJIS'. $KCODE is used by default. (#133) external CES ::= CES used in Ruby object of client and server internal CES ::= CES used in SOAP/OM * add iso-8859-1 external CES support. (#106) * fixed illegal 'qualified' handling of elements. it caused ASP.NET inteoperability problem. (#144) * added 'soap.envelope.use_numeric_character_reference' (boolean) option to let query XML use numeric character reference in XML, not plain UTF-8 character. !GoogleSearch server seems to not allow plain UTF-8 character since 2005-08-15 update. (#147) * SOAP::Header::SimpleHeader (de)serialization throws an exception on !SimpleHeader.on_(in|out)bound when header is a String. so we could not use a simple single element headerItem. fixed. thanks to emil. (#129) * out parameter of rpc operation did not work. (#132) * follow HTTP redirect only if using http-access2. (#125) (#145) * add a workaround for importing an WSDL whose path begins with drive letter. (#115) * WSDL * SOAP Data which is defined as a simpletype was not mapped correctly to Ruby obj when using wsdl2ruby.rb generated classdef file. (#123) * rpc/literal support. (#118) * re-implemented local element qualify/unqualify control. handles elementFormDefault and form in WSDL. (#119) * Array of an element which has simpleType causes a crash. (#128) * prarmeterOrder may not contain return part so it can be shorter than parts size. Thanks to Hugh. (#139) * Samples * added !BasicAuth client sample. (#117) * added Base64 client/server sample. * added Flickr SOAP interface client sample. (#122) * added !SalesForce client sample. (#135) * updated Thawte CA certificate for !GoogleAdWords sample. * updated a client script with the newer version made by Johan. thanks! * shortened long file names. (#120) * fixed typo in authheader sample. (#129) * updated deprecated method usage. (#138) * imported soap4r/1.5.4. == SOAP client and server == === for both client side and server side === * improved document/literal service support. style(rpc,document)/use(encoding, literal) combination are all supported. for the detail about combination, see test/soap/test_style.rb. * let WSDLEncodedRegistry#soap2obj map SOAP/OM to Ruby according to WSDL as well as obj2soap. closes #70. * let SOAP::Mapping::Object handle XML attribute for doc/lit service. you can set/get XML attribute via accessor methods which as a name 'xmlattr_' prefixed ( -> Foo#xmlattr_name). === client side === * WSDLDriver capitalized name operation bug fixed. from 1.5.3-ruby1.8.2, operation which has capitalized name (such as KeywordSearchRequest in AWS) is defined as a method having uncapitalized name. (converted with GenSupport.safemethodname to handle operation name 'foo-bar'). it introduced serious incompatibility; in the past, it was defined as a capitalized. define capitalized method as well under that circumstance. * added new factory interface 'WSDLDriverFactory#create_rpc_driver' to create RPC::Driver, not WSDLDriver (RPC::Driver and WSDLDriver are merged). 'WSDLDriverFactory#create_driver' still creates WSDLDriver for compatibility but it warns that the method is deprecated. please use create_rpc_driver instead of create_driver. * allow to use an URI object as an endpoint_url even with net/http, not http-access2. === server side === * added mod_ruby support to SOAP::CGIStub. rename a CGI script server.cgi to server.rb and let mod_ruby's RubyHandler handles the script. CGIStub detects if it's running under mod_ruby environment or not. * added fcgi support to SOAP::CGIStub. see the sample at sample/soap/calc/server.fcgi. (almost same as server.cgi but has fcgi handler at the bottom.) * allow to return a SOAPFault object to respond customized SOAP fault. * added the interface 'generate_explicit_type' for server side (CGIStub, HTTPServer). call 'self.generate_explicit_type = true' if you want to return simplified XML even if it's rpc/encoded service. == WSDL == === WSDL definition === * improved XML Schema support such as extension, restriction, simpleType, complexType + simpleContent, ref, length, import, include. * reduced "unknown element/attribute" warnings (warn only 1 time for each QName). * importing XSD file at schemaLocation with xsd:import. === code generation from WSDL === * generator crashed when there's '-' in defined element/attribute name. * added ApacheMap WSDL definition. == lib/yaml.rb * reworking YAML::Stream to use the new emitter. * Kernel#y requires an argument. == lib/yaml/rubytypes.rb * remove comments that are bungling up the rdoc and ri output. output symbols as plain scalars. * added Object#yaml_new. * (Array::to_yaml) merged a patch from Tilman Sauerbeck . [ruby-core:05055] * (Hash::to_yaml) (Array::to_yaml) merged a patch from Tilman Sauerbeck . [ruby-core:05055] == lib/yaml/stream.rb * reworking YAML::Stream to use the new emitter. == lib/yaml/tag.rb * the tag_subclasses? method now shows up in the class. allow taguri to be set using an accessor. continue support of Object#to_yaml_type. == misc/ruby-mode.el * (ruby-expr-beg) fix looking point drift. * (ruby-font-lock-syntactic-keywords) string literals to be matched non-greedy. * (ruby-expr-beg) returned true always. fixed: [ruby-list:40683] * ignore parenthesis inside heredoc. [ruby-core:04415] == missing/crypt.c * modified to make it compilable on platforms other than BSD. [ruby-dev:26430] * replaced with 4.4BSD version. == missing/erf.c * original erf.c by prof. Okumura is confirmed to be public domain. reverted BSD implementation. * need to include some headers for some platforms. * modified to make it compilable on platforms other than BSD. [ruby-dev:26430] * replaced with 4.4BSD version. == missing/mkdir.c * remove. [ruby-core:05177] == missing/vsnprintf.c * ANSI compiler supports const keyword. * removed the third provision from the old BSD license. [ruby-core:05177] == text/openssl/test_pair.rb * test for IO like methods. == vms/config.h * Define HAVE_{P,G,U}ID_T to 1. == win32/Makefile.sub * (OPTFLAGS) default global optimization to disabled for all VC++ versions. fixed: [ruby-dev:26897] * integrated macro definitions. * separate config.h for compiler versions. * moved CPPFLAGS only for ruby source to XCFLAGS. * moved rb_[ugp]id_t to get rid of redefinition warnings on mingw. * Remove #define for {g,u}id_t. * make also INSTALL_PROG and INSTALL_DATA system dependent. fixed: [ruby-core:04931] * (OPTFLAGS) default global optimization to disabled only for VC++6. * (BUILD_FILE_SEPARATOR) separator of building platform. * (CP, INSTALL) use COPY command. * miniruby can't load extensions on Windows. * ditto. * ri data was not installed into correct path. [ruby-dev:26011] * leave prefix empty in config.status for backward compatibility. fixed: [ruby-core:04649] * (config.h) add fcntl. * (COMMON_HEADERS) shouldn't include winsock2.h. * (LIBRUBY_SO) should use $DLDOBJS instead of $EXTOBJS. fixed: [ruby-core:04290] (backported from CVS HEAD) * rdoc support for mswin32. == win32/configure.bat * add extout option. * (--enable-install-doc, --disable-install-doc) (RDOCTARGET, install, install-nodoc, install-doc) rdoc support for mswin32. == win32/ifchange.bat * delete testing files. * backported from HEAD. == win32/rm.bat * backported from HEAD. == win32/setup.mak * add extout option. * ditto. * leave prefix empty in config.status for backward compatibility. fixed: [ruby-core:04649] * (RDOCTARGET, install, install-nodoc, install-doc) rdoc support for mswin32. == win32/win32.c * (rb_w32_strerror) should return correct message for ENAMETOOLONG and ENOTEMPTY. (bcc32) [ruby-dev:26533] * (rb_w32_strerror) stripped CR LF on the tail. (bcc32) [ruby-dev:26533] * (rb_w32_mkdir) should set EEXIST (not EACCES) if file or directory already exists. (bcc32) [ruby-dev:26508] * (rb_w32_rmdir) should set ENOTDIR (not EINVAL) if it is not directory. (bcc32, win32) * (rb_w32_rmdir, rb_w32_unlink) restore FILE_ATTRIBUTE_READONLY flag on function failure. * (NtInitialize) (ruby_options) move argument intialization back. [ruby-dev:26180] * (unixtime_to_filetime) use localtime() instead of gmtime() when using FileLocalTimeToFileTime(). * define rb_[pgu]id_t. * (unixtime_to_filetime) deal with DST. [ruby-talk:141817] * Change pid_t to rb_pid_t. * (rb_w32_fdopen) avoid warning on bcc32. (backported from HEAD) * (NtInitialize) (fnmatch) removed unnecessary code. (ruby_1_8 didn't have String#clear, so [ruby-dev:24749] didn't affect it) * (fcntl) (config.h) add fcntl. * (rb_w32_connect) support nonblocking mode. * (flock_winnt, flock_win95) unlock file even if LOCK_NB is specified. (backported from CVS HEAD) * (rb_w32_close) didn't close socket handle. [ruby-dev:25414] * (rb_w32_open_osfhandle) bcc32's _open_osfhandle never set EMFILE. * (rb_w32_mkdir) new function. POSIX.1 compatible interface. (backported from CVS HEAD) * (rb_w32_rmdir) new function. (backported from CVS HEAD) == win32/win32.h * (rb_w32_stat) added prototype. * include winsock2.h instead of winsock.h. (bcc32) * (copysign, scalb) define for compatibility with other platforms. [ruby-dev:26430] * moved rb_[ugp]id_t to get rid of redefinition warnings on mingw. * define rb_[pgu]id_t. * (rb_w32_fdopen) avoid warning on bcc32. (backported from HEAD) * (fcntl) (config.h) add fcntl. * (rb_w32_mkdir) new function. POSIX.1 compatible interface. (backported from CVS HEAD) * (rb_w32_rmdir) new function. (backported from CVS HEAD) == win32/win32.{ch} * (unlink) hook runtime function to change file attribute before unlinking. fixed: [ruby-dev:26360] == wince/Makefile.sub * integrated macro definitions. * separate config.h for compiler versions. * moved CPPFLAGS only for ruby source to XCFLAGS. * moved rb_[ugp]id_t to get rid of redefinition warnings on mingw. * Remove #define for {g,u}id_t. * make also INSTALL_PROG and INSTALL_DATA system dependent. fixed: [ruby-core:04931] * (BUILD_FILE_SEPARATOR) separator of building platform. * (CP, INSTALL) use COPY command. * miniruby can't load extensions on Windows. * ri data was not installed into correct path. [ruby-dev:26011] * leave prefix empty in config.status for backward compatibility. fixed: [ruby-core:04649] * (config.h) add fcntl. == wince/configure.bat * add extout option. == wince/setup.mak * add extout option. * leave prefix empty in config.status for backward compatibility. fixed: [ruby-core:04649] == wince/sys/types.h * Remove definitions of {p,g,u}id_t.