mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
The Ruby Programming Language [mirror]
fd06a2a7fb
* ext/dbm/extconf.rb: allow specifying dbm-type explicitly. * ext/dbm/extconf.rb: avoid gdbm if possible, because it leaks memory, whereas gdbm.so doesn't. potential incompatibility. * string.c (rb_str_insert): new method. * parse.y (yylex): lex_state after RESCUE_MOD should be EXPR_BEG. * array.c (rb_ary_insert): new method. * array.c (rb_ary_update): new utility function. * io.c (set_outfile): should check if closed before assignment. * eval.c (rb_eval): should preserve value of ruby_errinfo. * eval.c (rb_thread_schedule): infinite sleep should not cause dead lock. * array.c (rb_ary_flatten_bang): proper recursive detection. * eval.c (yield_under): need not to prohibit at safe level 4. * pack.c (pack_pack): p/P packs nil into NULL. * pack.c (pack_unpack): p/P unpacks NULL into nil. * pack.c (pack_pack): size check for P template. * ruby.c (set_arg0): wrong predicate when new $0 value is bigger than original space. * gc.c (id2ref): should use NUM2ULONG() * object.c (rb_mod_const_get): check whether name is a class variable name. * object.c (rb_mod_const_set): ditto. * object.c (rb_mod_const_defined): ditto. * marshal.c (w_float): precision changed to "%.16g" * eval.c (rb_call0): wrong retry behavior. * numeric.c (fix_aref): a bug on long>int architecture. * eval.c (rb_eval_string_wrap): should restore ruby_wrapper. * regex.c (re_compile_pattern): char class at either edge of range should be invalid. * eval.c (handle_rescue): use === to compare exception match. * error.c (syserr_eqq): comparison between SytemCallErrors should based on their error numbers. * eval.c (safe_getter): should use INT2NUM(). * bignum.c (rb_big2long): 2**31 cannot fit in 31 bit long. * regex.c (calculate_must_string): wrong length calculation. * eval.c (rb_thread_start_0): fixed memory leak. * parse.y (none): should clear cmdarg_stack too. * io.c (rb_fopen): use setvbuf() to avoid recursive malloc() on some platforms. * file.c (rb_stat_dev): device functions should honor stat field types (except long long such as dev_t). * eval.c (rb_mod_nesting): should not push nil for nesting array. * eval.c (rb_mod_s_constants): should not search array by rb_mod_const_at() for nil (happens for singleton class). * class.c (rb_singleton_class_attached): should modify iv_tbl by itself, no longer use rb_iv_set() to avoid freeze check error. * variable.c (rb_const_get): error message "uninitialized constant Foo at Bar::Baz" instead of "uninitialized constantBar::Baz::Foo". * eval.c (rb_mod_included): new hook called from rb_mod_include(). * io.c (opt_i_set): should strdup() inplace_edit string. * eval.c (exec_under): need to push cref too. * eval.c (rb_f_missing): raise NameError for "undefined local variable or method". * error.c (Init_Exception): new exception NoMethodError. NameError moved under ScriptError again. * eval.c (rb_f_missing): use NoMethodError instead of NameError. * file.c (Init_File): should redifine "new" class method. * eval.c (PUSH_CREF): sharing cref node was problematic. maintain runtime cref list instead. * eval.c (rb_eval): copy defn node before registering. * eval.c (rb_load): clear ruby_cref before loading. * variable.c (rb_const_get): no recursion to show full class path for modules. * eval.c (rb_set_safe_level): should set safe level in curr_thread as well. * eval.c (safe_setter): ditto. * object.c (rb_obj_is_instance_of): nil belongs to false, not true. * time.c (make_time_t): proper (I hope) daylight saving time handling for both US and Europe. I HATE DST! * eval.c (rb_thread_wait_for): non blocked signal interrupt should stop the interval. * eval.c (proc_eq): class check aded. * eval.c (proc_eq): typo fixed ("return" was ommitted). * error.c (Init_Exception): move NameError under StandardError. * class.c (rb_mod_clone): should copy method bodies too. * bignum.c (bigdivrem): should trim trailing zero bdigits of remainder, even if dd == 0. * file.c (check3rdbyte): safe string check moved here. * time.c (make_time_t): remove HAVE_TM_ZONE code since it sometimes reports wrong time. * time.c (make_time_t): remove unnecessary range check for platforms where negative time_t is available. * process.c (proc_waitall): should push Process::Status instead of Finuxm status. * process.c (waitall_each): should add all entries in pid_tbl. these changes are inspired by Koji Arai. Thanks. * process.c (proc_wait): should not iterate if pid_tbl is 0. * process.c (proc_waitall): ditto. * numeric.c (flodivmod): a bug in no fmod case. * process.c (pst_wifsignaled): should apply WIFSIGNALED for status (int), not st (VALUE). * io.c (Init_IO): value of $/ and $\ are no longer restricted to strings. type checks are done on demand. * class.c (rb_include_module): module inclusion should be check taints. * ruby.h (STR2CSTR): replace to StringType() and StringTypePtr(). * ruby.h (rb_str2cstr): ditto. * eval.c (rb_load): should not copy topleve local variables. It cause variable/method ambiguity. Thanks to L. Peter Deutsch. * class.c (rb_include_module): freeze check at first. * eval.c (rb_attr): sprintf() and rb_intern() moved into conditional body. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@1356 b2dd03c8-39d4-4d8f-98ff-823fe69b080e |
||
---|---|---|
cygwin | ||
djgpp | ||
doc/irb | ||
ext | ||
lib | ||
misc | ||
missing | ||
sample | ||
win32 | ||
x68 | ||
.cvsignore | ||
array.c | ||
bignum.c | ||
ChangeLog | ||
class.c | ||
compar.c | ||
config.guess | ||
config.sub | ||
configure.in | ||
COPYING | ||
defines.h | ||
dir.c | ||
dln.c | ||
dln.h | ||
dmyext.c | ||
enum.c | ||
env.h | ||
error.c | ||
eval.c | ||
file.c | ||
gc.c | ||
hash.c | ||
inits.c | ||
install-sh | ||
instruby.rb | ||
intern.h | ||
io.c | ||
keywords | ||
lex.c | ||
main.c | ||
Makefile.in | ||
MANIFEST | ||
marshal.c | ||
math.c | ||
mkconfig.rb | ||
node.h | ||
numeric.c | ||
object.c | ||
pack.c | ||
parse.y | ||
prec.c | ||
process.c | ||
random.c | ||
range.c | ||
re.c | ||
re.h | ||
README | ||
README.EXT | ||
README.EXT.jp | ||
README.jp | ||
regex.c | ||
regex.h | ||
ruby.1 | ||
ruby.c | ||
ruby.h | ||
rubyio.h | ||
rubysig.h | ||
rubytest.rb | ||
signal.c | ||
sprintf.c | ||
st.c | ||
st.h | ||
string.c | ||
struct.c | ||
time.c | ||
ToDo | ||
util.c | ||
util.h | ||
variable.c | ||
version.c | ||
version.h |
* What's Ruby Ruby is the interpreted scripting language for quick and easy object-oriented programming. It has many features to process text files and to do system management tasks (as in Perl). It is simple, straight-forward, and extensible. * Features of Ruby + Simple Syntax + *Normal* Object-Oriented features(ex. class, method calls) + *Advanced* Object-Oriented features(ex. Mix-in, Singleton-method) + Operator Overloading + Exception Handling + Iterators and Closures + Garbage Collection + Dynamic Loading of Object files(on some architecture) + Highly Portable(works on many UNIX machines, and on DOS, Windows, Mac, BeOS etc.) * How to get Ruby The Ruby distribution can be found on: ftp://ftp.ruby-lang.org/pub/lang/ruby/ You can get it by anonymous CVS. How to check out is: $ cvs -d :pserver:anonymous@cvs.ruby-lang.org:/home/cvs login (Logging in to anonymous@cvs.ruby-lang.org) CVS password: guest $ cvs -d :pserver:anonymous@cvs.ruby-lang.org:/home/cvs checkout ruby * Mailing list There is a mailing list to talk about Ruby. To subscribe this list, please send the following phrase subscribe YourFirstName YourFamilyName e.g. subscribe Joseph Smith in the mail body (not subject) to the address <ruby-talk-ctl@ruby-lang.org>. * How to compile and install This is what you need to do to compile and install Ruby: 1. If ./configure does not exist or is older than configure.in, run autoconf to (re)generate configure. 2. Run ./configure, which will generate config.h and Makefile. 3. Edit defines.h if you need. Probably this step will not need. 4. Remove comment mark(#) before the module names from ext/Setup (or add module names if not present), if you want to link modules statically. If you don't want to compile non static extension modules (probably on architectures which does not allow dynamic loading), remove comment mark from the line "#option nodynamic" in ext/Setup. 5. Run make. 6. Optionally, run 'make test' to check whether the compiled Ruby interpreter works well. If you see the message "test succeeded", your ruby works as it should (hopefully). 7. Run 'make install' You may have to be a super user to install ruby. If you fail to compile ruby, please send the detailed error report with the error log and machine/OS type, to help others. * Copying Ruby is copyrighted free software by Yukihiro Matsumoto <matz@zetabits.com>. You can redistribute it and/or modify it under either the terms of the GPL (see COPYING file), or the conditions below: 1. You may make and give away verbatim copies of the source form of the software without restriction, provided that you duplicate all of the original copyright notices and associated disclaimers. 2. You may modify your copy of the software in any way, provided that you do at least ONE of the following: a) place your modifications in the Public Domain or otherwise make them Freely Available, such as by posting said modifications to Usenet or an equivalent medium, or by allowing the author to include your modifications in the software. b) use the modified software only within your corporation or organization. c) rename any non-standard executables so the names do not conflict with standard executables, which must also be provided. d) make other distribution arrangements with the author. 3. You may distribute the software in object code or executable form, provided that you do at least ONE of the following: a) distribute the executables and library files of the software, together with instructions (in the manual page or equivalent) on where to get the original distribution. b) accompany the distribution with the machine-readable source of the software. c) give non-standard executables non-standard names, with instructions on where to get the original software distribution. d) make other distribution arrangements with the author. 4. You may modify and include the part of the software into any other software (possibly commercial). But some files in the distribution are not written by the author, so that they are not under this terms. They are utils.c(partly), regex.[ch], st.[ch] and some files under the ./missing directory. See each file for the copying condition. 5. The scripts and library files supplied as input to or produced as output from the software do not automatically fall under the copyright of the software, but belong to whomever generated them, and may be sold commercially, and may be aggregated with this software. 6. THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. * Ruby home-page The URL of the Ruby home-page is: http://www.ruby-lang.org/ * The Author Feel free to send comments and bug reports to the author. Here is the author's latest mail address: matz@zetabits.com ------------------------------------------------------- created at: Thu Aug 3 11:57:36 JST 1995 Local variables: mode: indented-text end: