[ANN] JRuby 1.2.0RC2 Released

The JRuby community is pleased to announce the release of JRuby 1.2.0RC2

Homepage: http://www.jruby.org/
Download: http://dist.codehaus.org/jruby/

JRuby 1.2.0RC2 has fixed many many compatibility issues and continued to
improve general performance. Due to popular demand we have a new versioning
system. 1.x.y was our old number system where x was the major release and y
was the minor release. Our new system just chops off the vestigial '1.' from
the front. 1.3, 1.4, ..., 1.x will just be minor releases of our current
major release.

****Please try your apps against 1.2.0RC2 ASAP and report problems****

Highlights:
- Improved Ruby 1.9 support (via --1.9)
  - Compiler now works
  - Almost all of the missing 1.9 methods have been added
- New experimental --fast flag which does more aggressive optimizations
- Large scale compiler and runtime cleanup and performance audit
- Parsing is 3-6x faster now.
- Preliminary android support (Ruboto)
- Rails pathname issue fixed on Windows
- Major bug triage since last release
- 1052 revisions since 1.1.6
- 232 bugs fixed since 1.1.6

****Bugs fixed since RC1****

key summary
JRUBY-3455 1.2RC1 case - when clause evaluation does not short-circuit
JRUBY-3456 rails command causes project to be created in the wrong directory
JRUBY-3460 java.lang.ClassCastException: org.jruby.RubyObject building jruby-rack
JRUBY-3461 Minor code conventions documentation typo
JRUBY-3449 jruby-complete-1.2RC1.jar seems to break FFI
JRUBY-3464 1.2.0 RC1 fails on Solaris x86_64
JRUBY-3376 Need FFI platform files generated for x86_64 linux
JRUBY-3378 JRuby needs a new release of JFFI
JRUBY-3466 NPE at org.jruby.runtime.callsite.RespondToCallSite.isCacheInvalid
JRUBY-3467 bug with *one* extra space on shebang with jruby-1.2rc1
JRUBY-2795 Process.setpriority failure in rubyspecs on Mac OS X, Soylatte
JRUBY-3370 Need Constantine release for JRuby 1.2
JRUBY-3402 extract command still tries to run but fails; remove entirely or fix
JRUBY-3457 ast script is not making it into the dist packages
JRUBY-3447 Rails console gets stuck on "quit"
JRUBY-3451 Random method undefined error after change in r.8491
JRUBY-3448 UNIXSocket file descriptor leak
JRUBY-3424 File.expand_path does not correctly follow directory changes from Dir.chdir
JRUBY-3450 Problem with jitting ruby block in JRuby 1.2 RC1
JRUBY-3444 Multi-line string interpolation parses under MRI but gives a parse error on JRuby

****Bugs fixed since 1.1.6****

Key Summary
JRUBY-414 Serialization of wrapped Java objects could be handled as user-marshalled data by Marshal
JRUBY-551 JRUBY-549
bfts test_file_test failures
JRUBY-750 defineAlias reports original name and not aliased one in stack traces
JRUBY-852 jirb exits on ESC followed by any arrow key followed by return
JRUBY-1079 IO.sysopen not defined
JRUBY-1201 TCPSocket.new(dest_adrr, dest_port, src_addr, src_port) missing from JRuby
JRUBY-1235 DRb hangs when transferring Ruby objects created in Java
JRUBY-1401 Pathname#realpath fails for Windows drive letters
JRUBY-1470 FileTest methods only work with string arguments
JRUBY-1555 DST bug in second form of Time.local
JRUBY-1576 multi-byte character encoding probrem
JRUBY-1606 File.expand_path does not work as expected
JRUBY-1639 Exception when stopping WEBrick running the new rails application
JRUBY-1803 Support Ruby 1.9 M17N strings
JRUBY-1853 define_method methods do not display the correct stack trace, may not be using frame safely
JRUBY-1854 def is almost 3x slower in JRuby
JRUBY-1855 EOF handling in case of reading program from standard input
JRUBY-1872 next statement should return the argument passed, not nil
JRUBY-1884 handling of file close while reading differs from mri
JRUBY-1950 -i flag not supported
JRUBY-2003 rexml pretty printing wrap() error
JRUBY-2040 new samples/jnlp dir: includes both unsigned and signed examples that work in Java 1.5 and 1.6
JRUBY-2108 IOWaitLibrary ready? returns nil when ready
JRUBY-2120 Wrong stacktraces from exceptions about wrong number of arguments
JRUBY-2131 Select with nil arrays should throw an exception
JRUBY-2139 jruby.compile.frameless=true cause "Superclass method 'initialize' disabled."
JRUBY-2168 test_io (test_copy_dev_null) fails under WinXP
JRUBY-2170 Very unverbose message when problem with native library exists
JRUBY-2174 Method#to_proc.call invocations much slower than normal Method#call invocations
JRUBY-2180 break performance is slower than MRI, sometimes slower than interpreted
JRUBY-2211 SNMP Requests does not timeout properly
JRUBY-2252 Kernel#exec should not raise SystemExit
JRUBY-2262 Java toString() mapping to invoke(... to_s ...).toString() doesn
JRUBY-2264 Include Nailgun in release binary packages
JRUBY-2285 Regression: rubyspec run with -V option breaks JRuby
JRUBY-2288 UDP locking problems when receiving from multiple senders on same port
JRUBY-2296 convertToRuby does not work if to_s does not return a String (but for example nil)
JRUBY-2305 File output cuts off at a certain point?
JRUBY-2307 DRb from MRI server to JRuby client fails with long messages
JRUBY-2326 Invalid cast during parsing of recursive.rb in facelets-2.3.0 (org.jruby.ast.YieldNode cannot be cast to org.jruby.ast.BlockAcceptingNode)
JRUBY-2328 Overriding require causes eval to give wrong __FILE__ in certain circumstances
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-2389 java.util.ConcurrentModificationException
JRUBY-2410 Multiple assignment could be made faster by not returning unused array
JRUBY-2424 running with -rprofile with multithreaded test causes NPE
JRUBY-2426 JRuby trunk does not build with IBM JVM 1.5
JRUBY-2435 Aliasing eval and other "special" methods should display a warning
JRUBY-2455 "jruby" script failed to find JRUBY_HOME leads to class not found
JRUBY-2484 unicode symbol not supported as in MRI
JRUBY-2504 JAR URLs are inconsistently supported by APIs that access the filesystem
JRUBY-2506 Marshal/IO.eof bug
JRUBY-2518 Dir["some glob"] doesn't work for files inside a jar
JRUBY-2521 Compilation Warning for Sun proprietary API using
JRUBY-2522 Can not execute JRuby 1.1.1 "ant test" with IBM JDK
JRUBY-2542 DATA.flock causes ClassCastException
JRUBY-2545 Recursively locking on a mutex results in deadlock
JRUBY-2548 JRuby conversion of String to Java String is arcane
JRUBY-2557 NPE when yielding method
JRUBY-2603 Couple of new rubyspec failures for URI library
JRUBY-2655 TCPSocket.new('localhost', 2001) connects on the wrong interface
JRUBY-2661 specs hang under Apple Java 5
JRUBY-2672 BasicSocket#close_read and #close_write not working
JRUBY-2675 jirb + jline do not work in cygwin
JRUBY-2699 If user's PATH contains '.' and 'jruby' resolves to './jruby', JRUBY_HOME is incorrectly set to '.', leading to 'NoClassDefFoundError'
JRUBY-2727 ActiveScaffold 1.1.1 fails with JRuby 1.1.2, probable path problem
JRUBY-2732 org.jruby.util.RubyInputStream is unused
JRUBY-2757 Compiled argument processing and arity checking are too large, too much bytecode
JRUBY-2759 Time Zone "MET" maps to Asia/Tehran
JRUBY-2761 Thread#wakeup fails when sleep is called with a parameter
JRUBY-2772 Zlib::Deflate doesn't appear to deflate
JRUBY-2782 "No such file or directory (IOError)" when JAR file named in java.class.path but not active filesystem
JRUBY-2788 Make Time.now monotonically increasing
JRUBY-2794 Failure in String#crypt specs, Mac OS X, Soylatte
JRUBY-2796 Missing constant in Process::Constants on Mac OS X (darwin)
JRUBY-2797 File.expand_path rubyspec failure on Mac OS X, Soylatte
JRUBY-2802 JRuby wrapped Java objects formerly exposed readers for non-public fields
JRUBY-2804 IO.popen of 'yes' process hangs on close
JRUBY-2815 System triggered from inside of tracing behaves oddly
JRUBY-2817 File.chown works with 64bit JDK, but raises NotImplementedError on 32 bit JDK
JRUBY-2820 Most Etc methods behave diferently on Windows under x32 and x64 JVMs
JRUBY-2826 Array#pack('w') is broken (exceptions and wrong results)
JRUBY-2830 String#unpack with 'w' is completely unimplemented
JRUBY-2845 -S switch breaks if you have directory in pwd matching name of file in bin/PATH
JRUBY-2846 gem generate_index broken
JRUBY-2849 CCE using proc{} in AR callbacks
JRUBY-2855 Classpath search order is not respected by require when classpath includes both jars and directories
JRUBY-2858 test_file.rb::test_opening_readonly_file_for_write_raises_eacces() fails with "IOError: Permission denied" on FreeBSD 7.0 amd64 + java 1.6.0_07
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-2896 jruby -S picks up script from local directory
JRUBY-2898 Exception trying to use BSF (java.lang.NoClassDefFoundError: org/apache/bsf/util/BSFEngineImp)
JRUBY-2901 JRuby does not support options in shebang line
JRUBY-2917 Missing peephole optimizations in parser, compiler
JRUBY-2921 Newly overridden methods are not called if the old superclass method has already been called
JRUBY-2933 Ruby runtimes are pinned to memory due to ChannelStream
JRUBY-2941 popen IO lockup with multiple threads
JRUBY-2950 Net::IMAP#authenticate stalls / blocks in recent versions of JRuby
JRUBY-2951 repeated popen call may throw NULL pointer exception
JRUBY-2970 Timeout.rb is not working in special cases (Thread may block whole application).
JRUBY-2974 multi-byte exception message turned into garbled characters when Java Exception nested NativeException.
JRUBY-2979 File#getc fails on illegal seek when reading from /dev/ttyS0 on Linux
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-2999 Regression: Inheriting method with same name from two Java interfaces causes Java classloader error
JRUBY-3000 integration issues with Java classes containing inner classes
JRUBY-3003 ArrayStoreException in compiler when calling Array.fill
JRUBY-3005 Stomp gem hangs in Stomp::Client#subscribe
JRUBY-3007 Message method value of Exception is missing in Java when exception raised in ruby
JRUBY-3011 java classes with non-public constructors are incorrectly instantiated
JRUBY-3017 DRb "premature header" error on JRuby client
JRUBY-3035 Get Rails tests running in a CI server somewhere before 1.1.6 release, to ensure no future breakages
JRUBY-3038 Unable to insert YAML into t.text field (behavior different from Ruby 1.8.6)
JRUBY-3054 Thread#status is "run" when thread is blocking on condition variable
JRUBY-3055 permission javax.management.MBeanServerPermission "createMBeanServer";
JRUBY-3061 NKF(unsupported Q encode stream)
JRUBY-3065 New public LoadService#findFileToLoad method
JRUBY-3071 Illegal seek error trying to read() from pipe
JRUBY-3073 JRuby script engine does not load on IBM JDK
JRUBY-3076 RubyUDPSocket.send tries to do inet address lookup, pauses too long for inet6 failure
JRUBY-3077 Update ruby_test tests and incorporate changes into build
JRUBY-3085 Add constant caching for Colon2 and Colon3 (specific module and Object cases)
JRUBY-3088 "RStone" port of PyStone is slower on JRuby than 1.9
JRUBY-3089 Digest::Base stores in memory all bytes passed to the digest, causing OutOfMemoryError
JRUBY-3103 Compiler closures use two different binding mechanisms, need better construction and caching logic
JRUBY-3109 Update stdlib to an appropriate 1.8.6 patchlevel
JRUBY-3116 ArrayIndexOutOfBoundsException in tmail
JRUBY-3120 Regression: error serializing array of objects with custom to_yaml def to yaml
JRUBY-3125 Some Socket constants not supported.
JRUBY-3127 Inconsistent DynamicScope instances in evalScriptlet
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-3142 Dir.pwd correctly displays dirs with unicode characters in them
JRUBY-3146 Time#_dump RubySpec failures
JRUBY-3147 Time#_load RubySpec failures
JRUBY-3148 Array#fill spec failures
JRUBY-3152 Process.times returns invalid values
JRUBY-3158 Wrong ruby methods called on object of same class from Java code.
JRUBY-3160 REXML returns error for add_attribute
JRUBY-3174 FFI MemoryPointer#get_string(0, x) gets confused by null byte in the buffer
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-3179 JRuby can't handle do/end blocks within String-inlined expressions
JRUBY-3180 Class in default package can't be reopened under Java namespace
JRUBY-3187 JRuby command line scripts do not work with spaces in the path
JRUBY-3190 method `module_eval' for main:Object should be undefined?
JRUBY-3204 IO.read and IO.readlines do not take a block
JRUBY-3207 super error message is inaccurate when superclass doesn't implement method.
JRUBY-3208 ant task api-docs runs out of memory, patch included
JRUBY-3211 builder library is slower in JRuby than in MRI
JRUBY-3214 load and require don't work correctly for .class files
JRUBY-3217 Memory Leak with Adopted Threads
JRUBY-3218 Import is sometimes confused by unquoted class name
JRUBY-3221 Rubinius -bad instanceof tests in RubiniusMachine for attempt at fast path evaluation
JRUBY-3224 Array#to_java with java object reference doesn't carry over object identity
JRUBY-3226 Including more than one java interface stops Test::Unit execution
JRUBY-3232 Zlib::GzipReader.each_line yields compressed data
JRUBY-3233 JRuby with Rails 2.2.2 unable to instantiate a java class
JRUBY-3234 Difference in require behaviour with MRI with ".rb" suffix
JRUBY-3238 Jruby 1.1.7 still leaking weakreferences
JRUBY-3242 Performance degradation on write operations
JRUBY-3244 [PATCH] Support atime updates via utime
JRUBY-3248 jruby can't load file produced with jrubyc
JRUBY-3250 test_java_pkcs7.rb - Problem coercing Bignum into class java.math.BigInteger
JRUBY-3251 ConcurrencyError bug when installing Merb on JRuby
JRUBY-3253 Lack of default jruby.home in embedded usage causes NPE
JRUBY-3254 Make JRuby's Time#local behave more like MRI
JRUBY-3255 jruby -S script/server fails in Rails application
JRUBY-3257 RaiseException#printStrackTrace doesn't deal well with nil messages
JRUBY-3262 JRuby 1.1.6 regression: ClassFormatError if Ruby superclass of Ruby class implements super-interface of Java interface
JRUBY-3267 patch attached to update eclipse .classpath to refer to bytelist-1.0.1.jar
JRUBY-3269 SystemStackError with YAML.dump
JRUBY-3270 using activerecord 'to_xml' method crashes JRuby (and debugger)
JRUBY-3274 Many new Array#pack failures in updated RubySpecs
JRUBY-3275 New ARGF spec failures
JRUBY-3276 New IO#readpartial and IO#seek spec failures
JRUBY-3277 Constant lookup should omit topmost lexical scope; not bail out on first Object-hosting lexical scope
JRUBY-3280 patch attached to update eclipse .classpath to add new jars in build_lib/
JRUBY-3287 Add public RubyInstanceConfig#setCompatVersion
JRUBY-3289 ArgumentError: dump format error() when unmarshalling Rails session and EOFError when unmarshalling hash with containing value of type ActionController::Flash::FlashHash
JRUBY-3290 Float range to restrictive in FFI code
JRUBY-3296 Etc.getpwuid should raise TypeError if invalid type
JRUBY-3298 Kernel.srand calls #to_i on number
JRUBY-3303 [1.9] splat of array at front of assignment broken (same for other grammatical constructs)
JRUBY-3305 Fixnums & Floats should be coerced to the narrowest java.lang.Number when passed to a java method that expects Object
JRUBY-3307 tempfile.rb sucks in JRuby
JRUBY-3308 Deadlock between RubyModule.includeModule() and RubyClass.invalidateCacheDescendants()
JRUBY-3310 Race condition in JRuby when Active Support is overriding Kernel.require
JRUBY-3314 Pull in final 1.9.1 stdlib when released
JRUBY-3316 Group expression class path fails to parse
JRUBY-3317 require "tempfile"; Dir.tmpdir fails
JRUBY-3318 If 'jruby' executable is a relative symlink, JRuby won't start
JRUBY-3324 Error in string encoding conversion
JRUBY-3328 Incorrect behavior for case/when when true or false are the first conditions
JRUBY-3329 Major divergence in threading behaviour between Ruby 1.8.6 and JRuby 1.1.6
JRUBY-3331 to_f near Float::MAX
JRUBY-3332 ConcurrentModificationException In Application Startup
JRUBY-3339 java.lang.ArrayIndexOutOfBoundsException in RubyArray.java
JRUBY-3340 String#unpack('m') fails with ArrayIndexOutOfBoundsException
JRUBY-3351 Tempfile defaults to a directory that does not exist on Windows
JRUBY-3360 Pure-Java tempfile does not use a #make_tmpname callback
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-3363 OutOfMemoryError when using soap4r on jruby 1.1.6
JRUBY-3365 Objects with custom to_yaml methods break collection to_yaml
JRUBY-3366 Faulty marshalling error blows up in ActiveSupport
JRUBY-3367 Dir.glob processes nested braces incorrectly
JRUBY-3372 [PATCH] FFI: passing nil for a declared string parameter blows up
JRUBY-3373 [PATCH] FFI: assigning Struct to a pointer fails
JRUBY-3374 [PATCH] FFI::ManagedStruct instantiated objects are of the wrong class
JRUBY-3375 'attr' implementation is incompatible with MRI 1.9.1 behavior
JRUBY-3377 Need FFI platform files generated for x86_64 darwin
JRUBY-3386 Array#eql? rubyspec failure
JRUBY-3387 Array#== rubyspec failure
JRUBY-3390 RubySpec: Numeric#coerce calls #to_f to convert other if self responds to #to_f
JRUBY-3392 RubySpec: Thread.stop resets Thread.critical to false
JRUBY-3397 defined? CONST is not following proper constant lookup rules
JRUBY-3398 Attributes defined from Java tried to use current frame for visibility
JRUBY-3405 popen breaks input channel for IRB
JRUBY-3407 FFI Stack Level Too Deep on Library.send(:method, args)
JRUBY-3408 FFI non-string args for methods are turned into strings anyway
JRUBY-3410 Add -y flag to debug the parser
JRUBY-3411 JRuby does not build or run on AIX due to exceptions in org.jruby.ext.ffi.Platform
JRUBY-3420 [PATCH] Added basic_word_break_characters method to Readline
JRUBY-3432 String#hash needs to be made encoding-aware
JRUBY-3436 [PATCH] FFI should allow passing nil as a callback parameter
JRUBY-3437 pid-returning methods should make a best effort to get a real pid
JRUBY-3439 super in top level go boom

Please be careful: I have a slow machine, if you continue your release
frequency increase I will not have enough time to execute the ant task
between two releases ;).

Amazing

Robert

I'm hurt, JRUBY-3237 isn't on there and I fixed that a couple days ago ;).

Either way, hooray!

-Zac

···

On Mar 6, 2009, at 5:35 PM, Thomas Enebo wrote:

The JRuby community is pleased to announce the release of JRuby 1.2.0RC2

Homepage: http://www.jruby.org/
Download: http://dist.codehaus.org/jruby/

JRuby 1.2.0RC2 has fixed many many compatibility issues and continued to
improve general performance. Due to popular demand we have a new versioning
system. 1.x.y was our old number system where x was the major release and y
was the minor release. Our new system just chops off the vestigial '1.' from
the front. 1.3, 1.4, ..., 1.x will just be minor releases of our current
major release.

****Please try your apps against 1.2.0RC2 ASAP and report problems****

Highlights:
- Improved Ruby 1.9 support (via --1.9)
- Compiler now works
- Almost all of the missing 1.9 methods have been added
- New experimental --fast flag which does more aggressive optimizations
- Large scale compiler and runtime cleanup and performance audit
- Parsing is 3-6x faster now.
- Preliminary android support (Ruboto)
- Rails pathname issue fixed on Windows
- Major bug triage since last release
- 1052 revisions since 1.1.6
- 232 bugs fixed since 1.1.6

****Bugs fixed since RC1****

key summary
JRUBY-3455 1.2RC1 case - when clause evaluation does not short-circuit
JRUBY-3456 rails command causes project to be created in the wrong directory
JRUBY-3460 java.lang.ClassCastException: org.jruby.RubyObject building jruby-rack
JRUBY-3461 Minor code conventions documentation typo
JRUBY-3449 jruby-complete-1.2RC1.jar seems to break FFI
JRUBY-3464 1.2.0 RC1 fails on Solaris x86_64
JRUBY-3376 Need FFI platform files generated for x86_64 linux
JRUBY-3378 JRuby needs a new release of JFFI
JRUBY-3466 NPE at org.jruby.runtime.callsite.RespondToCallSite.isCacheInvalid
JRUBY-3467 bug with *one* extra space on shebang with jruby-1.2rc1
JRUBY-2795 Process.setpriority failure in rubyspecs on Mac OS X, Soylatte
JRUBY-3370 Need Constantine release for JRuby 1.2
JRUBY-3402 extract command still tries to run but fails; remove entirely or fix
JRUBY-3457 ast script is not making it into the dist packages
JRUBY-3447 Rails console gets stuck on "quit"
JRUBY-3451 Random method undefined error after change in r.8491
JRUBY-3448 UNIXSocket file descriptor leak
JRUBY-3424 File.expand_path does not correctly follow directory changes from Dir.chdir
JRUBY-3450 Problem with jitting ruby block in JRuby 1.2 RC1
JRUBY-3444 Multi-line string interpolation parses under MRI but gives a parse error on JRuby

In article <49B1A599.9000409@sun.com>,

···

Thomas Enebo <Thomas.Enebo@Sun.COM> wrote:

****Bugs fixed since RC1****

Is there anyone who would have a look at JRUBY-3032 please?

--
Ollivier ROBERT -=- EUROCONTROL
Systems Quality & Support

Zachary Brown wrote:

I'm hurt, JRUBY-3237 isn't on there and I fixed that a couple days ago ;).

Gotta draw the line somewhere :slight_smile: It will certainly be in JRuby 1.3.

- Charlie

Ollivier Robert wrote:

In article <49B1A599.9000409@sun.com>,

****Bugs fixed since RC1****

Is there anyone who would have a look at JRUBY-3032 please?

JRUBY-3032 turned out to be a larger chore than we wanted to swallow in 1.2. We essentially need to examine all places we're passing strings to/from the system, to/from Java APIs, or to/from native calls, and make sure we're using the appropriate encoding everywhere. Currently we usually assume utf-8, and even then we're not consistently encoding and decoding strings as utf-8 when calling APIs.

The best way to help would be to contribute tests or specs (rubyspecs would be great) for Ruby APIs working with unicode directory and file names.

- Charlie

···

Thomas Enebo <Thomas.Enebo@Sun.COM> wrote:

Haha, I know. We need a good test for that which will be fun to figure out :-/.

-Zac

···

On Mar 7, 2009, at 6:53 PM, Charles Oliver Nutter wrote:

Zachary Brown wrote:

I'm hurt, JRUBY-3237 isn't on there and I fixed that a couple days ago ;).

Gotta draw the line somewhere :slight_smile: It will certainly be in JRuby 1.3.

- Charlie