[#7043] RUBYOPT versioning? — Caleb Tennis <caleb@...>
Matz, others:
[#7050] RDoc patches for BigDecimal in Ruby CVS — mathew <meta@...>
Now that 1.8.4 is out and the initial flurry of problem reports has died
[#7055] More on VC++ 2005 — Austin Ziegler <halostatue@...>
Okay. I've got Ruby compiling. I'm attempting to get everything in
Hi,
On 05/01/06, nobuyoshi nakada <nobuyoshi.nakada@ge.com> wrote:
On 06/01/06, Austin Ziegler <halostatue@gmail.com> wrote:
Hi,
On 09/01/06, nobuyoshi nakada <nobuyoshi.nakada@ge.com> wrote:
[#7057] 64-bit Solaris READ_DATA_PENDING Revisited — Steven Lumos <steven@...>
[#7078] CRC - a proof-of-concept Ruby compiler — Anders Hkersten <chucky@...>
Hello everyone,
[#7084] mathn: ugly warnings — hadmut@... (Hadmut Danisch)
Hi,
Hadmut Danisch wrote:
Daniel Berger wrote:
*Dean Wampler *<deanwampler gmail.com> writes:
On Fri, 13 Jan 2006, mathew wrote:
On Fri, 13 Jan 2006, Mathieu Bouchard wrote:
ara.t.howard@noaa.gov wrote:
On Fri, 13 Jan 2006, James Britt wrote:
Dean Wampler <deanwampler gmail.com> writes:
On Sat, 14 Jan 2006, mathew wrote:
[#7100] core dump with ruby 1.9.0 (2006-01-10) and bdb-0.5.8 — Tanaka Akira <akr@...17n.org>
I found following test script dumps core.
>>>>> "T" == Tanaka Akira <akr@m17n.org> writes:
In article <200601110905.k0B950Op001713@moulon.inra.fr>,
[#7109] Calling flock with block? — Bertram Scharpf <lists@...>
Hi,
On Thu, 12 Jan 2006, Bertram Scharpf wrote:
[#7129] YAML.load({[]=>""}.to_yaml) — Tanaka Akira <akr@...17n.org>
I found that current YAML doesn't round trip {[]=>""}.
Hi.
Hi.
In article <20060115202203.D3624CA0.ocean@m2.ccsnet.ne.jp>,
[#7162] FileUtils.mv does not unlink source file when moving over filesystem boundary — Pav Lucistnik <pav@...>
Hi,
On Mon, 16 Jan 2006, Pav Lucistnik wrote:
[#7178] Add XHTML 1.0 Output Support to Ruby CGI — Paul Duncan <pabs@...>
The attached patch against Ruby 1.8.4 adds XHTML 1.0 output support to
[#7186] Ruby 1.9 and FHS — "Kirill A. Shutemov" <k.shutemov@...>
Build and install system changes:
[#7195] trouble due ruby redefining posix function eaccess — noreply@...
Bugs item #3317, was opened at 2006-01-24 15:33
[#7197] SSL-enabled DRb fds on SSLError? — ctm@... (Clifford T. Matthews)
Howdy,
On Jan 24, 2006, at 12:46 PM, Clifford T. Matthews wrote:
Patch worked fine against HEAD.
[#7203] bcc32's memory manager bug — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
Hi.
[#7211] Some troubles with an embedded ruby interpreter — Matt Mower <matt.mower@...>
Hi folks,
[#7216] String#scan loops forefever if scanned string is modified inside block. — noreply@...
Bugs item #3329, was opened at 2006-01-26 10:55
[#7226] Fwd: Re: Question about massive API changes — "Sean E. Russell" <ser@...>
Hello,
Sean E. Russell wrote:
>
On 1/28/06, Caleb Tennis <caleb@aei-tech.com> wrote:
On Saturday 28 January 2006 17:13, Wilson Bilkovich wrote:
Sean E. Russell wrote:
[#7249] PATCH: append option to sysread — Yohanes Santoso <ysantoso-rubycore@...>
[#7259] TCP/UDP server weird lags on 1.8.4 linux — "Bill Kelly" <billk@...>
Hi !
Re: Design contracts and refactoring (was Re: mathn: ugly warnings)
*Dean Wampler *<deanwampler gmail.com> writes: > Let me suggest an XP-style alternative; make thorough unit tests > required and make sure they "document" - and test! - the design > "contract". Unit tests are not an alternative. They are an additional requirement. > Some XP gurus, such as Robert Martin, have pointed out > that the test suite is an executable form of the requirements, > especially the "acceptance tests" the customer uses (or should use) to > confirm that a delivery satisfies the requirements. > Although unit tests constitute one set of requirements, they rarely cover the full set. In a language like Ruby where code is often generic by default, it is implausible to generate enough unit tests to cover every eventuality. For example, consider a simple vector addition routine in a 3D library. The unit tests might test its behavior with Float and Integer vectors, since that's why it was written. However, there's no reason it shouldn't be used with heterogeneous vectors, Complex vectors, or any of a dozen other types. Indeed, there's no general way for the writer of the code to predict what classes the code might be asked to manipulate, nor should they try. (Checking using kind_of? and throwing an exception if you don't recognize it is not The Ruby Way, right?) However, it is of vital importance to document the intended supported functionality, which is a superset of the functionality the unit tests describe. Suppose it is determined that the vector add routine is painfully slow. An obvious solution is to refactor it to use CBLAS, which provides highly optimized native code vector operations. However, to do that you need to know whether the feature of supporting (say) Complex vectors or BigDecimal vectors is intended or not. The unit tests won't tell you this. You also need to know whether vectors with elements exceeding the capacity of machine types are supported. It's quite likely your unit tests don't cover the entire range of integers and floats, because you don't have an infinite amount of time to run unit tests in. So, are the omissions intentional, indicating a limit to the scope of the API? Or are they just omissions? There's no way to tell. > One limitation of documentation is that it has no enforcement power, > so you have to write tests anyway to test conformance. Unit tests have no enforcement power either, because you can just change the test. Indeed, I've already had to do this once when it turned out that the unit test was wrong. (In net/ftp.) > The XP view is > that you should eliminate the redundancy. Except it's not redundancy. Unit tests define a set of functionality that is required. Documentation tells you the functionality that is supported, which is generally a superset of the functionality required by the unit tests. People who write code using a library are interested in the *supported* functionality, not the bare minimum *required* functionality. People who want to refactor code need to know the *supported* functionality, not the bare minimum *required* functionality. Finally, a reductio ad absurdum to illustrate the problem in concrete form. Give me a function and a set of unit tests, and I can implement a hopelessly broken refactored version that happens to pass all those tests: if (arguments == unit-test-set-1) return canned-value-1 if (arguments == unit-test-set-2) return canned-value-2 else return random-value Without documentation saying what the function was supposed to do, there's no reason my version shouldn't be considered correct according to XP dogma. After all, it passes all the unit tests, and it's likely to be very fast. And that's one of the major faults with XP dogma. mathew