[#14696] Inconsistency in rescuability of "return" — Charles Oliver Nutter <charles.nutter@...>

Why can you not rescue return, break, etc when they are within

21 messages 2008/01/02
[#14699] Re: Inconsistency in rescuability of "return" — Gary Wright <gwtmp01@...> 2008/01/02

[#14738] Enumerable#zip Needs Love — James Gray <james@...>

The community has been building a Ruby 1.9 compatibility tip list on

15 messages 2008/01/03
[#14755] Re: Enumerable#zip Needs Love — Martin Duerst <duerst@...> 2008/01/04

Hello James,

[#14772] Manual Memory Management — Pramukta Kumar <prak@...>

I was thinking it would be nice to be able to free large objects at

36 messages 2008/01/04
[#14788] Re: Manual Memory Management — Marcin Raczkowski <mailing.mr@...> 2008/01/05

I would only like to add that RMgick for example provides free method to

[#14824] Re: Manual Memory Management — MenTaLguY <mental@...> 2008/01/07

On Sat, 5 Jan 2008 15:49:30 +0900, Marcin Raczkowski <mailing.mr@gmail.com> wrote:

[#14825] Re: Manual Memory Management — "Evan Weaver" <evan@...> 2008/01/07

Python supports 'del reference', which decrements the reference

[#14838] Re: Manual Memory Management — Marcin Raczkowski <mailing.mr@...> 2008/01/08

Evan Weaver wrote:

[#14911] Draft of some pages about encoding in Ruby 1.9 — Dave Thomas <dave@...>

Folks:

24 messages 2008/01/10

[#14976] nil encoding as synonym for binary encoding — David Flanagan <david@...>

The following just appeared in the ChangeLog

37 messages 2008/01/11
[#14977] Re: nil encoding as synonym for binary encoding — Yukihiro Matsumoto <matz@...> 2008/01/11

Hi,

[#14978] Re: nil encoding as synonym for binary encoding — Dave Thomas <dave@...> 2008/01/11

[#14979] Re: nil encoding as synonym for binary encoding — David Flanagan <david@...> 2008/01/11

Dave Thomas wrote:

[#14993] Re: nil encoding as synonym for binary encoding — Dave Thomas <dave@...> 2008/01/11

[#14980] Re: nil encoding as synonym for binary encoding — Gary Wright <gwtmp01@...> 2008/01/11

[#14981] Re: nil encoding as synonym for binary encoding — Yukihiro Matsumoto <matz@...> 2008/01/11

Hi,

[#14995] Re: nil encoding as synonym for binary encoding — David Flanagan <david@...> 2008/01/11

Yukihiro Matsumoto writes:

[#15050] how to "borrow" the RDoc::RubyParser and HTMLGenerator — Phlip <phlip2005@...>

Core Rubies:

17 messages 2008/01/13
[#15060] Re: how to "borrow" the RDoc::RubyParser and HTMLGenerator — Eric Hodel <drbrain@...7.net> 2008/01/14

On Jan 13, 2008, at 08:54 AM, Phlip wrote:

[#15062] Re: how to "borrow" the RDoc::RubyParser and HTMLGenerator — Phlip <phlip2005@...> 2008/01/14

Eric Hodel wrote:

[#15073] Re: how to "borrow" the RDoc::RubyParser and HTMLGenerator — Eric Hodel <drbrain@...7.net> 2008/01/14

On Jan 13, 2008, at 20:35 PM, Phlip wrote:

[#15185] Friendlier methods to compare two Time objects — "Jim Cropcho" <jim.cropcho@...>

Hello,

10 messages 2008/01/22

[#15194] Can large scale projects be successful implemented around a dynamic programming language? — Jordi <mumismo@...>

A good article I have found (may have been linked by slashdot, don't know)

8 messages 2008/01/24

[#15248] Symbol#empty? ? — "David A. Black" <dblack@...>

Hi --

24 messages 2008/01/28
[#15250] Re: Symbol#empty? ? — Yukihiro Matsumoto <matz@...> 2008/01/28

Hi,

Re: nil encoding as synonym for binary encoding

From: David Flanagan <david@...>
Date: 2008-01-11 19:30:10 UTC
List: ruby-core #15015
Yukihiro Matsumoto wrote:
> Hi,
> 
> In message "Re: nil encoding as synonym for binary encoding"
>     on Sat, 12 Jan 2008 03:04:00 +0900, David Flanagan <david@davidflanagan.com> writes:
> 
> |I don't understand.  Are you saying that in the current implementation 
> |set_encoding(nil) is different than 
> |set_encoding(Encoding.default_external) and also different than 
> |set_encoding(Encoding::BINARY)?  What does it do, then?
> 
> set_encoding(nil) - default
>   * read encoding - Encoding.default_external
>   * write encoding - anything, no check
> 
> set_encoding(Encoding.default_external)
>   * read encoding - Encoding.default_external
>   * write encoding - check whether default_external
> 
> set_encoding(Encoding::BINARY)?
>   * read encoding - Encoding::BINARY
>   * write encoding - check whether Encoding::BINARY
> 
> See?
> 
> 							matz.
> 

Yes, I think I see now.  But it raises more questions:

0) Is no check on write really different than checking for 
Encoding::BINARY on write?  Because ASCII-8BIT/BINARY is the legacy 
encoding that is traditionally used as a byte string, I would have 
thought that transcoding to BINARY would really just be a no-op the same 
as force_encoding(BINARY) and that set_encoding(nil) and 
set_encoding(BINARY) would actually behave the same on writes.  Is it 
the introduction of encodings like UTF-16le that are not ASCII supersets 
that causes this assumption to fail?

1) My understanding is that sockets and pipes are different than files 
and start off with a "read encoding" of Encoding::BINARY.  Is that still 
true? If so, what does set_encoding(nil) do to a pipe, then?  Does it 
reset it to its default binary encoding, or does it change it to the 
default external encoding?

2) Do the internal_encoding and external_encoding methods return the 
read encoding or the write encoding of a stream?

I think I have to agree with Dave that you're asking the set_encoding 
method to do too many things here. There is internal vs. external 
encoding. There is read vs. write encoding. And there's files vs pipes 
and sockets which have different default encodings.  That is a lot for 
one method to manipulate and still be understandable to its users.

Maybe you need separate set_read_encoding and set_write_encoding 
methods?  Or maybe allow a mode string argument to set_encoding.  If 
this string is "r" (the default) then only the read encoding is set.  If 
"w", then only the write encoding is set.  If "r+" then both encodings 
are set.  Or allow the "r" or "w" as a prefix to the encoding name, so 
the argument to set_encoding could look just like a mode string passed 
to File.open:

   socket.set_encoding("r:utf-8")     # set read encoding
   socket.set_encoding("w:binary")    # set write encoding

But that doesn't really address my original issue of distinguishing 
between nil and BINARY, however.

	David

In This Thread