Wednesday, February 18, 2009

JRuby 1.2: Coping With Bugs

We get a lot of bug reports on the JRuby project. No, it's not because JRuby's a buggy POS. It's because we're implementing the core of an entire platform. It's hard.

Over the past year or so we kinda let the bug tracker go a little wild. We've never had more than two full-time people on the project, and community contributions wax and wane with the seasons, so we've had to choose our battles. For some amount of time, we would focus on performance, since without a reasonably-performing implementation, nobody would choose to use JRuby. Then we'd cycle back to fixing bugs, usually in the last couple weeks before a release. So the flow of bug fixes waxed and waned with our release cycles.

The problem with this approach was that we really couldn't keep up with all the reports coming in and continue to work on the "unreported issues" of JRuby like performance. So something had to give, and it was sometimes the bugs.

Roughly around September, we crossed an important threshold: 500 open bugs. They dated as far back as 2006 (we moved to Codehaus in 2006), and across the entire release sequence of JRuby; there were even some bug reports against pre-1.0 versions. From September until about mid-January, we worked to keep the number of open bugs below 500. Sometimes it would peek above, but we were generally successful.

About mid-January, I figured it was time to really bite the bullet, and I started walking from the oldest bug forward. It has been a long slog, but I'm making great progress.

So far, I've managed to whittle the total number of bugs down from 506 to 326, and that's with a couple dozen more filed in the past two weeks. The majority of these were either already fixed or invalid/incomplete bugs, but I've also made a concentrated effort to focus on and fix as many as possible. At the very least, I've made an attempt on every single one.

During that process, I learned a bit about how my brain works. During the past year, if I didn't know immediately how to fix a bug I often walked away from it and worked on something fun like compiler optimization. But during this latest bug hunt, because I did not want to just punt all those bugs one more time, I did something a little different.

Whenever I encountered a bug that seemed difficult or that I simply didn't want to fix, I would do one of two things:

  • Take a break. Often this meant I had reached my limit and needed a breather. A little Wii, a glass of scotch, a movie...anything to take my mind of it for a bit.
  • Count to ten. Sometimes, after reading through the bug, all I really needed was a moment for my brain to start "wondering" about the solution. Once the wheels started turning, I was almost compelled to dig deeper.
As a result, many long-standing bugs--including bugs I thought we would never fix--are now resolved and ready for the 1.2 release. I'm going on three weeks now of 12-hour days trying to fix what seems like an endless stream of bugs, but the end is in sight. And I want to stress that this level of effort has never happened in a single release. There's as much work in JRuby 1.2 as in multiple 1.1.x releases combined. I'll be blogging more of these posts over the next couple weeks.

For your amusement, here is the complete list of bugs we have resolved during the past nine weeks, since shortly after the 1.1.6 release. These aren't all fixes, but even the "already fixed", "won't fix", "not a bug", or "incomplete" ones were reviewed, tested, and considered. A couple of these I just applied patches or marked resolved based on someone else's work. And of course we're not done with JRuby 1.2 yet. Just you wait and see :)

Bugs Resolved (Fixed, Won't Fix, Not A Bug, or Incomplete Information), Past Nine Weeks:

(in the order they were resolved)

JRUBY-2538

File#chmod always returns -1, fails rubyspec

JRUBY-1505

Solidify public APIs separate from those that might change

JRUBY-3208

ant task api-docs runs out of memory, patch included

JRUBY-3221

Rubinius -bad instanceof tests in RubiniusMachine for attempt at fast path evaluation

JRUBY-3232

Zlib::GzipReader.each_line yields compressed data

JRUBY-3244

[PATCH] Support atime updates via utime

JRUBY-3249

Testing errors in test_java_mime.rb

JRUBY-3250

test_java_pkcs7.rb - Problem coercing Bignum into class java.math.BigInteger

JRUBY-2992

Bad cast in jruby-openssl X509Utils

JRUBY-3204

IO.read and IO.readlines do not take a block

JRUBY-3251

ConcurrencyError bug when installing Merb on JRuby

JRUBY-3248

jruby can't load file produced with jrubyc

JRUBY-3257

RaiseException#printStrackTrace doesn't deal well with nil messages

JRUBY-3259

sqlite db file on MRI is put in db dir. We put it in CWD.

JRUBY-3260

:date is stored as integer (not date) in sqlite3

JRUBY-2425

NPE at Connection Shutdown

JRUBY-2329

java.lang.NullPointerException when trying to connect to a Oracle XE database

JRUBY-3023

Renaming indexed columns fails

JRUBY-2384

Rails migrations fail with: undefined method `create_database' for class `#'

JRUBY-2400

ActiveRecord/JRuby Memory leak in update_attributes!()

JRUBY-2040

new samples/jnlp dir: includes both unsigned and signed examples that work in Java 1.5 and 1.6

JRUBY-3270

using activerecord 'to_xml' method crashes JRuby (and debugger)

JRUBY-3277

Constant lookup should omit topmost lexical scope; not bail out on first Object-hosting lexical scope

JRUBY-3278

Array#reduce is undefined

JRUBY-3187

JRuby command line scripts do not work with spaces in the path

JRUBY-3267

patch attached to update eclipse .classpath to refer to bytelist-1.0.1.jar

JRUBY-3280

patch attached to update eclipse .classpath to add new jars in build_lib/

JRUBY-3276

New IO#readpartial and IO#seek spec failures

JRUBY-3256

jruby -S script/console fails in Rails application

JRUBY-3199

IllegalArgumentException in X509V3CertificateGenerator when executing Hoe's rake gem running on SoyLatte JDK

JRUBY-3275

New ARGF spec failures

JRUBY-3287

Add public RubyInstanceConfig#setCompatVersion

JRUBY-3171

loading rake breaks import

JRUBY-3290

Float range to restrictive in FFI code

JRUBY-2826

Array#pack('w') is broken (exceptions and wrong results)

JRUBY-3116

ArrayIndexOutOfBoundsException in tmail

JRUBY-2522

Can not execute JRuby 1.1.1 "ant test" with IBM JDK

JRUBY-2426

JRuby trunk does not build with IBM JVM 1.5

JRUBY-3042

undefined method `quote' for Regexp:Class (NoMethodError) when runs gem list on AIX with IBM JAVA 1.5

JRUBY-1950

'-i flag not supported

JRUBY-3302

Doesn't biuld on windows for ffi problem

JRUBY-3303

[1.9] splat of array at front of assignment broken (same for other grammatical constructs)

JRUBY-3307

tempfile.rb sucks in JRuby

JRUBY-3305

Fixnums & Floats should be coerced to the narrowest java.lang.Number when passed to a java method that expects Object

JRUBY-2768

jdbc_mysql.rb should not enforce the utf8_bin collation on table creation

JRUBY-2115

Error doing add_column with Derby and jdbc-adapter-0.7.2

JRUBY-2967

[PATCH] Derby handling of binary/date/time fields. hsqldb handling of binary fields.

JRUBY-2647

[activerecord-jdbcsqlite3 adapter] Date/Datetime/Time fields simplification to INTEGER sqlite storage type is not correctly handled

JRUBY-3073

JRuby script engine does not load on IBM JDK

JRUBY-3109

Update stdlib to an appropriate 1.8.6 patchlevel

JRUBY-2541

Time assumes UTC timezone

JRUBY-3254

Make JRuby's Time#local behave more like MRI

JRUBY-2740

BigDecimal#precs fails two new rubyspec tests

JRUBY-3298

Kernel.srand calls #to_i on number

JRUBY-2987

Kernel#system does not work correctly

JRUBY-3242

Performance degradation on write operations

JRUBY-2128

error accessing JRuby DRb server from MRI DRb client

JRUBY-3268

JRuby DRb client cannot connect to MRI DRb server

JRUBY-3274

Many new Array#pack failures in updated RubySpecs

JRUBY-3147

Time#_load RubySpec failures

JRUBY-3146

Time#_dump RubySpec failures

JRUBY-3148

Array#fill spec failures

JRUBY-3142

Dir.pwd correctly displays dirs with unicode characters in them

JRUBY-2609

spec --line does not work with JRuby

JRUBY-3317

require "tempfile"; Dir.tmpdir fails

JRUBY-2364

The private keyword doesn't change visiblity of previously called methods with same send/call site

JRUBY-2796

Missing constant in Process::Constants on Mac OS X (darwin)

JRUBY-3226

Including more than one java interface stops Test::Unit execution

JRUBY-3035

Get Rails tests running in a CI server somewhere before 1.1.6 release, to ensure no future breakages

JRUBY-3318

If 'jruby' executable is a relative symlink, JRuby won't start

JRUBY-3328

Incorrect behavior for case/when when true or false are the first conditions

JRUBY-3269

SystemStackError with YAML.dump

JRUBY-3229

Javasand does not compile with JRuby 1.1.5

JRUBY-3333

idea

JRUBY-3332

ConcurrentModificationException In Application Startup

JRUBY-3329

Major divergence in threading behaviour between Ruby 1.8.6 and JRuby 1.1.6

JRUBY-3308

Deadlock between RubyModule.includeModule() and RubyClass.invalidateCacheDescendants()

JRUBY-3324

Error in string encoding conversion

JRUBY-3340

String#unpack('m') fails with ArrayIndexOutOfBoundsException

JRUBY-3341

The body of POST requests is not passing through jruby-rack

JRUBY-3312

JRuby can double slash ("//") the directory given by __FILE__ when "everything" suits this thing to happen. :-)

JRUBY-2884

jdbc_postgre.rb issue handling nil booleans

JRUBY-2208

Memory Leak in ActiveRecord-jdbc or JRubyEngine used with BeanScriptingFramework

JRUBY-2897

jdbc_postgre.rb needs microsecond support

JRUBY-2995

activerecord jdbc derby adapter should quote columns called "year"

JRUBY-2949

jdbcderby adapter should ignore :limit for INTEGER

JRUBY-2718

jdbcsqlite3 at JRuby on Rails do not work properly

JRUBY-3344

Update H2 to a later version

JRUBY-3342

Wrabler escapes config.ru twice

JRUBY-3282

Upgrade to derby 10.4.2.0 to allow unique constraints with nullable columns

JRUBY-2767

Mistake in selecting identity with H2/HSQLDB

JRUBY-2433

java.lang.IllegalArgumentException in debug mode when using CLOB

JRUBY-3310

Race condition in JRuby when Active Support is overriding Kernel.require

JRUBY-3127

Inconsistent DynamicScope instances in evalScriptlet

JRUBY-3339

java.lang.ArrayIndexOutOfBoundsException in RubyArray.java

JRUBY-3351

Tempfile defaults to a directory that does not exist on Windows

JRUBY-3353

String#unpack invalid output

JRUBY-3361

Compiled case/when blows up with arrays as when clauses

JRUBY-3362

attr_accessor, attr_reader, attr_writer, and attr not obeying visibility

JRUBY-1034

Post parse processing of the result comment placing as example

JRUBY-48

Ability to write JUnit4+ tests in JRuby

JRUBY-1572

Allow visible fields from inherited Java classes show up as instance variables (@foo)

JRUBY-2108

IOWaitLibrary ready? returns nil when ready

JRUBY-1895

JRUBY-1890 IO.popen does not support "-"

JRUBY-852

jirb exits on ESC followed by any arrow key followed by return

JRUBY-2015

"RAILS_ROOT" cannot be put on a place different from "Context root" in Goldspike.

JRUBY-2139

jruby.compile.frameless=true cause "Superclass method 'initialize' disabled."

JRUBY-2174

Method#to_proc.call invocations much slower than normal Method#call invocations

JRUBY-2170

Very unverbose message when problem with native library exists

JRUBY-3338

jIRB cannot get any input with Polish characters (utf-8) on Mac OSX

JRUBY-2252

Kernel#exec should not raise SystemExit

JRUBY-1855

EOF handling in case of reading program from standard input

JRUBY-1997

System.gc() is extremely expensive when calling Java code from JRuby

JRUBY-821

getting in $SAFE level 4 freezes

JRUBY-1770

weakref-based singleton class "attached" can blow up in certain unusual circumstances

JRUBY-1555

DST bug in second form of Time.local

JRUBY-1872

next statement should return the argument passed, not nil

JRUBY-2214

Pure-Java version of lstat doesn't fail on non-existing file

JRUBY-1901

standardize and publish public API for embedders

JRUBY-2211

SNMP Requests does not timeout properly

JRUBY-2298

We should generate method binding code with APT

JRUBY-2305

File output cuts off at a certain point?

JRUBY-2306

NPE in org.jruby.RubyIO.flush

JRUBY-2288

UDP locking problems when receiving from multiple senders on same port

JRUBY-2333

usage of unexistant variable in REXML::SourceFactory

JRUBY-2346

Nailgun does not compile under HP-UX

JRUBY-2353

Process.kill breaks up JRuby, while works in MRI on Windows

JRUBY-2369

'ant spec' failures on on MacOS

JRUBY-2168

test_io (test_copy_dev_null) fails under WinXP

JRUBY-2410

Multiple assignment could be made faster by not returning unused array

JRUBY-2389

java.util.ConcurrentModificationException

JRUBY-929

Java input/output streams from Ruby string's backing byte array

JRUBY-1681

Pathological slowdown in Array#insert

JRUBY-1470

FileTest methods only work with string arguments

JRUBY-1576

multi-byte character encoding probrem

JRUBY-2119

Jruby shell script don't work on KSH shell

JRUBY-3360

Pure-Java tempfile does not use a #make_tmpname callback

JRUBY-2518

Dir["some glob"] doesn't work for files inside a jar

JRUBY-3367

Dir.glob processes nested braces incorrectly

JRUBY-3366

Faulty marshalling error blows up in ActiveSupport

JRUBY-2027

Problems with the H2 jdbc adapter, schema metadata behavior

JRUBY-2417

Make fields immutable where possible

JRUBY-1565

ReWriteVisitor transforms Fixnums into base 10 despite their original format

JRUBY-2917

Missing peephole optimizations in parser, compiler

JRUBY-2542

DATA.flock causes ClassCastException

JRUBY-2545

Recursively locking on a mutex results in deadlock

JRUBY-2285

Regression: rubyspec run with -V option breaks JRuby

JRUBY-2120

Wrong stacktraces from exceptions about wrong number of arguments

JRUBY-1639

Exception when stopping WEBrick running the new rails application

JRUBY-2534

jdbcpostgresql adapter inserts invalid number literals into generated SQL, causes exceptions

JRUBY-3375

'attr' implementation is incompatible with MRI 1.9.1 behavior

JRUBY-3365

Objects with custom to_yaml methods break collection to_yaml

JRUBY-2603

Couple of new rubyspec failures for URI library

JRUBY-2465

2 digit year resolves to 1st century rather than 20th when using postgres timestamp with timezone + activerecord-jdbcpostgresql-adapter

JRUBY-2672

BasicSocket#close_read and #close_write not working

JRUBY-2655

TCPSocket.new('localhost', 2001) connects on the wrong interface

JRUBY-2759

Time Zone "MET" maps to Asia/Tehran

JRUBY-2758

Class Socket is missing #bind

JRUBY-2761

Thread#wakeup fails when sleep is called with a parameter

JRUBY-2772

Zlib::Deflate doesn't appear to deflate

JRUBY-3289

ArgumentError: dump format error() when unmarshalling Rails session and EOFError when unmarshalling hash with containing value of type ActionController::Flash::FlashHash

JRUBY-3228

Some error saving to a Rails session [Marshalling bug?]

JRUBY-2792

Net::HTTP spec failures in get_print spec; IO not getting expected "print" call

JRUBY-2804

IO.popen of 'yes' process hangs on close

JRUBY-2755

Precompiled scripts do not set initial position information correctly

JRUBY-2484

unicode symbol not supported as in MRI

JRUBY-2817

File.chown works with 64bit JDK, but raises NotImplementedError on 32 bit JDK

JRUBY-2912

MS SQL-Server - Create/Drop Database bug

JRUBY-2815

System triggered from inside of tracing behaves oddly

JRUBY-3069

dbd-jdbc: Support Ruby DBI Statement.fetch_scroll

JRUBY-3235

dbd-jdbc: Add helper functions to wrap already existing jdbc Connection and Statement objects

JRUBY-3068

dbd-jdbc: Override Ruby DBI's default database return value coercion for Date / Time / Timestamp columns

JRUBY-3067

dbd-jdbc: Register a handler for DBI 0.4.x's default parameter binding type coercion

JRUBY-1345

Files added to a module via Kernel.autoload are not automatically loaded if the class they contain is extended

JRUBY-2727

ActiveScaffold 1.1.1 fails with JRuby 1.1.2, probable path problem

JRUBY-2699

If user's PATH contains '.' and 'jruby' resolves to './jruby', JRUBY_HOME is incorrectly set to '.', leading to 'NoClassDefFoundError'

JRUBY-2820

Most Etc methods behave diferently on Windows under x32 and x64 JVMs

JRUBY-2841

String#<<>

JRUBY-2844

Memcache session store does not work across multiple application servers

JRUBY-2845

'-S switch breaks if you have directory in pwd matching name of file in bin/PATH

JRUBY-2849

CCE using proc{} in AR callbacks

JRUBY-2862

Improve JRuby::Commands' handling of bindir

JRUBY-2861

Cannot call super inside a method that overrides a protected method on Java base class

JRUBY-2868

ThreadService.getRubyThreadFromThread supports only one non-rubynative thread at a time.

JRUBY-2782

"No such file or directory (IOError)" when JAR file named in java.class.path but not active filesystem

JRUBY-2901

JRuby does not support options in shebang line

JRUBY-2846

gem generate_index broken

JRUBY-2832

Rails static page caching won't generally work with Java ServletFilter unless some serious hack with the cache directory is found

JRUBY-414

Serialization of wrapped Java objects could be handled as user-marshalled data by Marshal

JRUBY-2921

Newly overridden methods are not called if the old superclass method has already been called

JRUBY-2661

specs hang under Apple Java 5

JRUBY-2933

Ruby runtimes are pinned to memory due to ChannelStream

JRUBY-1578

Incomplete HTTS response from Microsoft IIS servers using net/https

JRUBY-2941

popen IO lockup with multiple threads

JRUBY-2925

Java Integration can now instantiate Java classes with no public constructor

JRUBY-2802

JRuby wrapped Java objects formerly exposed readers for non-public fields

JRUBY-2504

JAR URLs are inconsistently supported by APIs that access the filesystem

JRUBY-1846

Kernel::fork should use forkall(2) on solaris instead of fork(2)

JRUBY-2395

Have to call setPaint instead of assigning to g.paint

JRUBY-1401

Pathname#realpath fails for Windows drive letters

JRUBY-2296

convertToRuby does not work if to_s does not return a String (but for example nil)

JRUBY-2904

Need a better solution for tracking Java object wrappers

JRUBY-1327

When define_method replaces an inherited Java method, the ruby_case_version is not replaced

JRUBY-2951

repeated popen call may throw NULL pointer exception

JRUBY-2974

multi-byte exception message turned into garbled characters when Java Exception nested NativeException.

JRUBY-2980

String#<<>

JRUBY-2981

alias_method_chain pattern is extremely show on jruby

JRUBY-2982

Unicode regular expressions by UTF-8 don't work

JRUBY-2988

jirb does not echo characters to the terminal after suspend and resume in the shell

JRUBY-2997

Dir[] results in NPE depending on permissions

JRUBY-3000

integration issues with Java classes containing inner classes

JRUBY-3007

Message method value of Exception is missing in Java when exception raised in ruby

JRUBY-3016

Nested Class/Enum issue with JRockit

JRUBY-3011

java classes with non-public constructors are incorrectly instantiated

JRUBY-2999

Regression: Inheriting method with same name from two Java interfaces causes Java classloader error

JRUBY-2700

jdbcsqlite3 adapter does not respect default parameter

JRUBY-3026

[Derby] Allow select/delete/update conditions with comparison to NULL using '='

JRUBY-3288

jruby-openssl: SSLSocket.syswrite error for big (>16k) data

JRUBY-3017

DRb "premature header" error on JRuby client

JRUBY-2766

Create caching mechanism for all our many calls to callMethod from Java code

JRUBY-3200

insert statement returns null from the postgresql jdbc adapter

JRUBY-2996

Migration step with create_table with string column with :default => "" fails due to missing default value in SQL

JRUBY-2184

ActiveRecord is slower on JRuby than on MRI

JRUBY-3202

url style Postgres configuration is broken in rake.

JRUBY-1854

def is almost 3x slower in JRuby

JRUBY-2618

Table does not exist error possibly caused by upper case table name

JRUBY-3003

ArrayStoreException in compiler when calling Array.fill

JRUBY-2180

break performance is slower than MRI, sometimes slower than interpreted

JRUBY-2304

active_scaffold - No such file or directory

JRUBY-3386

Array#eql? rubyspec failure

JRUBY-3387

Array#== rubyspec failure

JRUBY-3054

Thread#status is "run" when thread is blocking on condition variable

JRUBY-3390

RubySpec: Numeric#coerce calls #to_f to convert other if self responds to #to_f

JRUBY-3055

permission javax.management.MBeanServerPermission "createMBeanServer";

JRUBY-3072

Using a ruby Numeric to set a parameter with a signature of java.lang.Integer causes a java.lang.ClassCastException

JRUBY-3082

1.1.4 unable to use 'logging' gem (works in 1.1.3)

JRUBY-3398

Attributes defined from Java tried to use current frame for visibility

JRUBY-3397

defined? CONST is not following proper constant lookup rules

JRUBY-3089

Digest::Base stores in memory all bytes passed to the digest, causing OutOfMemoryError

JRUBY-3125

Some Socket constants not supported.

JRUBY-3128

Different jruby behaviour that ruby 1.8.6/1.8.7/1.9 when running file that is named as one of required file.

JRUBY-3175

Cloning java byte array returns incorrect object

JRUBY-3177

ConcurrentModificationException

JRUBY-3178

http spec tests fail when webrick starts on address 0.0.0.0

JRUBY-2548

JRuby conversion of String to Java String is arcane

JRUBY-3174

FFI MemoryPointer#get_string(0, x) gets confused by null byte in the buffer

JRUBY-2896

jruby -S picks up script from local directory

JRUBY-3163

Incorrect namespace for CipherError

JRUBY-1853

define_method methods do not display the correct stack trace, may not be using frame safely

JRUBY-2855

Classpath search order is not respected by require when classpath includes both jars and directories

JRUBY-3222

Problems with migrations where direct type specified

JRUBY-2424

running with -rprofile with multithreaded test causes NPE

JRUBY-2691

Update sybase driver to pass simple unit tests with jtds and verify it works with the new dialect keyword

JRUBY-3065

New public LoadService#findFileToLoad method

JRUBY-2261

ThreadContext should use SoftReference instead of WeakReference

JRUBY-2116

import org.eclipse.jface.dialogs.MessageDialog -- causes java.lang.NullPointerException

JRUBY-2898

Exception trying to use BSF (java.lang.NoClassDefFoundError: org/apache/bsf/util/BSFEngineImp)

JRUBY-2003

rexml pretty printing wrap() error

JRUBY-752

undef'ing and redef'ing methods should give disabled message?

JRUBY-2262

Java toString() mapping to invoke(... to_s ...).toString() doesn

JRUBY-3121

Glassfish Gem 0.9.0 does not work with JRuby 1.1.5

JRUBY-551

JRUBY-549 bfts test_file_test failures

JRUBY-2248

Problem with active_scaffold defaults defined in application.rb

JRUBY-2446

httprequest error for a SOAP request to a Rails ActiveWebService

JRUBY-3005

Stomp gem hangs in Stomp::Client#subscribe

JRUBY-3180

Class in default package can't be reopened under Java namespace

JRUBY-3047

IO.select sometime reports Unable to establish loopback

JRUBY-2851

JDBC adapter in JAR file not being picked up by java.lang.Class.forName in 1.1.3 (worked in 1.1.2)

JRUBY-2313

Automatically convert RubyFile to java.io.File

JRUBY-2328

Overriding require causes eval to give wrong __FILE__ in certain circumstances

JRUBY-2794

Failure in String#crypt specs, Mac OS X, Soylatte

JRUBY-2137

ENV[] is case sensitive on Windows

JRUBY-2797

File.expand_path rubyspec failure on Mac OS X, Soylatte

JRUBY-2608

Examine whether -Xrs flag to JVM could be used to improve our signal-handling logic

JRUBY-2675

jirb + jline do not work in cygwin

JRUBY-2521

Compilation Warning for Sun proprietary API using

JRUBY-2263

Running merb under a concurrent load causes ArrayIndexOutOfBoundsExceptions

JRUBY-2706

File.stat('/home') treated as a relative path

JRUBY-2557

NPE when yielding method

JRUBY-2860

EOFError while consuming REST web service from glassfish v3

JRUBY-2835

rails image_tag generates url get 404

JRUBY-3095

chmod_R broken

JRUBY-2830

String#unpack with 'w' is completely unimplemented

JRUBY-3038

Unable to insert YAML into t.text field (behavior different from Ruby 1.8.6)

JRUBY-3004

Excess warnings when using rake TestTask

JRUBY-1606

File.expand_path does not work as expected

JRUBY-750

defineAlias reports original name and not aliased one in stack traces

JRUBY-1201

TCPSocket.new(dest_adrr, dest_port, src_addr, src_port) missing from JRuby

JRUBY-3160

REXML returns error for add_attribute

JRUBY-2732

org.jruby.util.RubyInputStream is unused

JRUBY-2455

"jruby" script failed to find JRUBY_HOME leads to class not found

JRUBY-3190

method `module_eval' for main:Object should be undefined?

JRUBY-2950

Net::IMAP#authenticate stalls / blocks in recent versions of JRuby

JRUBY-1542

1.1b1 doesn't build with gcj 4.2

JRUBY-2788

Make Time.now monotonically increasing

JRUBY-3296

Etc.getpwuid should raise TypeError if invalid type

JRUBY-3167

loadpath and classpath problem

JRUBY-2983

JRuby crashes after running 110 RSpec examples

JRUBY-3085

Add constant caching for Colon2 and Colon3 (specific module and Object cases)

JRUBY-3207

super error message is inaccurate when superclass doesn't implement method.

JRUBY-2979

File#getc fails on illegal seek when reading from /dev/ttyS0 on Linux

JRUBY-3076

RubyUDPSocket.send tries to do inet address lookup, pauses too long for inet6 failure

JRUBY-2555

CLONE -JIT max and JIT threshold should be adjusted for improvements in JRuby over the past months

JRUBY-3407

FFI Stack Level Too Deep on Library.send(:method, args)

JRUBY-3410

Add -y flag to debug the parser

JRUBY-3103

Compiler closures use two different binding mechanisms, need better construction and caching logic

JRUBY-3179

JRuby can't handle do/end blocks within String-inlined expressions

JRUBY-3316

Group expression class path fails to parse

JRUBY-3151

OpenSSL::Random#pseudo_bytes raises ArgumentError on negative arguments

JRUBY-3088

"RStone" port of PyStone is slower on JRuby than 1.9

JRUBY-3120

Regression: error serializing array of objects with custom to_yaml def to yaml

JRUBY-3211

builder library is slower in JRuby than in MRI

JRUBY-1884

handling of file close while reading differs from mri

JRUBY-3214

load and require don't work correctly for .class files

JRUBY-3218

Import is sometimes confused by unquoted class name

JRUBY-3224

Array#to_java with java object reference doesn't carry over object identity

JRUBY-1079

IO.sysopen not defined

JRUBY-3071

Illegal seek error trying to read() from pipe

JRUBY-3152

Process.times returns invalid values

JRUBY-3064

Process.uid does not work on non-natve platforms (jna-posix)

JRUBY-2757

Compiled argument processing and arity checking are too large, too much bytecode

JRUBY-3061

NKF(unsupported Q encode stream)

JRUBY-3105

Embedding JRuby-Rack (non-war deployment)

JRUBY-3077

Update ruby_test tests and incorporate changes into build

JRUBY-2970

Timeout.rb is not working in special cases (Thread may block whole application).

JRUBY-3253

Lack of default jruby.home in embedded usage causes NPE

JRUBY-3063

File::link using CIFS raises Errno::EEXIST error if the 'old_file' is open while Matz Ruby raises Errno::ETXTBSY

JRUBY-3252

Iterative String concatenation operations in JRuby degrade faster than in MRI.

JRUBY-3255

jruby -S script/server fails in Rails application

JRUBY-3258

after installing minigems (and after minigem setup gems not working on 1.1.6)

JRUBY-1235

DRb hangs when transferring Ruby objects created in Java

JRUBY-3271

Java Stacktrace and exception is swallowed

JRUBY-2063

Wrong monitor handling in o.j.util.ChannelStream.read

JRUBY-2131

Select with nil arrays should throw an exception

16 comments:

Mirko Stocker said...

Pragmatic Thinking and Learning from the Pragmatic Programmers has some really insightful stuff on how the brain works, I'm reading it right now and I've already learned quite a lot.

Ollivier said...

Hey, *my* bug isn't fixed! Just kidding, thanks for the hard work :)

Anonymous said...

Great work! You rock!

Nikos Dimitrakopoulos said...

Wow! You closed more than 150 bugs in one month? You are crazy - and you thank you for that :)

DevDanke said...

It's nice to hear the history of the bug backlog. I'd have thought you guys would've had more community help. I'm even more impressed with what you two have done.

Congratulations on your significant progress on the bug backlog. Must feel good. Sounds like JRuby 1.2 will be a very solid release.

Please don't over do it on the 12 hours days. The worst thing that could happen to JRuby is for you to burn out. I hope you can find a sustainable work pace.

Anonymous said...

Thanks for a great thing you are doing guys!
Maybe posting some documentation about how some things are done inside the JRuby interpreter would make us less techie guys more able to contribute to the project. Or some "what you can do" trails.

Anonymous said...

Thanks for a great thing you are doing guys!
Maybe posting some documentation about how some things are done inside the JRuby interpreter would make us less techie guys more able to contribute to the project. Or some "what you can do" trails.

Renato said...

I'm speechless...

I think we can't really thank you enough for the fantastic job you've all done.

rene.scheibe said...

How have you converted the Jira issue list to the table in this post? Was it a script or some plugin?

rob said...

Bravo!

Seriously!

Charles Oliver Nutter said...

Thanks all for the words of encouragement. I think we'll have more bugs fixed in 1.2 than the last couple releases combined. And that's on top of performance and feature enhancements.

Mirko: That's a great suggestion, I'll have to look into it.

DevDanke: We have had a lot of community help; if we hadn't, the bug tracker could have been well over 500. But a lot of the bugs were in obscure parts of JRuby only one or two of us know well, so they ended up sitting for a long time.

And yes, I'm going to take a break after 1.2, that's for sure :)

Anonymous: Yeah we need more architecture documents. You might try poking around the JRuby Wiki for docs there, and hopefully we'll get some better ones up some day soon. There's also my talk on InfoQ about JRuby internals...it might help give a general idea how things fit together.

rene.scheibe: I just had Jira export to an Excel document, opened that in OpenOffice, and copy/pasted it into blogger.

oLdsk3wL said...

thanks! JRuby rocks

Doug Donohoe said...

Charles,

Doug from Wayzata here ... we had dinner a while back with Adam W and some other architects.

Anyhow, I was seeing hangs on my Mac Pro with 1.1.6 using the IO.popen call to run things like rsync or df. I just downloaded the latest 1.2 from svn and can confirm that it resolved that issue.

Nice work. I look forward to 1.2.

-Doug

Joshua Go said...

Yeah, seriously, I second DevDanke. Don't burn out with the 12 hour days. Is there anything those of us with full-time jobs can do to help -- sending you guys pizza or scotch money to help you take the edge off?

Anonymous said...

Massive! Thanks a lot for the huge effort. Keep up the good word, but do take care.

Hervé said...

That's some amazing work !!