[#395238] rubygem: ispunity (unite all your internet connections) — Arun Tomar <tomar.arun@...>

Dear friends,

12 messages 2012/05/01

[#395250] Overwriting one Ruby array or arrays with another — Craig Law <lists@...>

Hi

14 messages 2012/05/02

[#395258] array of strings - finding letter combinations — "Sebastjan H." <lists@...>

Hi All,

16 messages 2012/05/02

[#395357] Why Enumerator#next does not return more than one value? — Földes László <lists@...>

If I have an Enumerator which yields elements of a mathematical series

10 messages 2012/05/07

[#395373] How to use Data_Wrap_Struct to assign the DATA VALUE to an exsiting Ruby object? — Iñaki Baz Castillo <ibc@...>

Hi, my code receives an arbitrary klass name (provided by the user)

8 messages 2012/05/07

[#395429] passing via instance variable or regular () — sam jam <lists@...>

def first

10 messages 2012/05/10

[#395463] I'm looking for a Metaprogramming Project — Phil Stone <lists@...>

Hello,

19 messages 2012/05/11

[#395548] A million reasons why Encoding was a mistake — Marc Heiler <lists@...>

Newcomer wants to try Ruby.

15 messages 2012/05/15
[#395561] Re: A million reasons why Encoding was a mistake — Ryan Davis <ryand-ruby@...> 2012/05/15

[#395595] Re: A million reasons why Encoding was a mistake — Brian Candler <lists@...> 2012/05/16

I will add that the OP is not entirely alone in his opinion.

[#395551] How to ensure that a block runs entirely after other threads? (Thread.exclusive does not "work") — Iñaki Baz Castillo <ibc@...>

Hi, I expected that in the following example code, thread t1 would not

8 messages 2012/05/15

[#395575] GUI with ruby on windows — David Acosta <lists@...>

hello friends, i am a begginer and i have a litlle question, how can i

17 messages 2012/05/16

[#395604] what is going wrong here? — roob noob <lists@...>

Notice the initialization of both classes in each of the examples, if

20 messages 2012/05/16

[#395646] rb_gc_register_address() or rb_gc_mark()? — Iñaki Baz Castillo <ibc@...>

Hi, I've bad experiences with rb_gc_register_address(), it does never

16 messages 2012/05/17

[#395686] reading from and writing to a Unicode encoded file — "Sebastjan H." <lists@...>

Hi,

19 messages 2012/05/18
[#395694] Re: reading from and writing to a Unicode encoded file — Regis d'Aubarede <lists@...> 2012/05/18

Hello,

[#395697] Re: reading from and writing to a Unicode encoded file — "Sebastjan H." <lists@...> 2012/05/18

Regis d'Aubarede wrote in post #1061272:

[#395698] Re: reading from and writing to a Unicode encoded file — Regis d'Aubarede <lists@...> 2012/05/18

Sebastjan H. wrote in post #1061276:

[#395699] Re: reading from and writing to a Unicode encoded file — "Sebastjan H." <lists@...> 2012/05/18

Regis d'Aubarede wrote in post #1061277:

[#395750] Re: reading from and writing to a Unicode encoded file - issues when using Shoes — "Sebastjan H." <lists@...> 2012/05/21

Hi,

[#395754] Re: reading from and writing to a Unicode encoded file - issues when using Shoes — "Sebastjan H." <lists@...> 2012/05/21

Sebastjan H. wrote in post #1061483:

[#395740] ? Ruby through CGI and Rails — Shaun Lloyd <list@...>

Hi everybody,

22 messages 2012/05/21
[#395764] Re: Ruby through CGI and Rails — Brian Candler <lists@...> 2012/05/21

Shaun Lloyd wrote in post #1061455:

[#395786] Re: Ruby through CGI and Rails — Shaun Lloyd <list@...> 2012/05/22

On 22/05/12 03:37, Brian Candler wrote:

[#395838] Re: Ruby through CGI and Rails — Brian Candler <lists@...> 2012/05/23

Shaun Lloyd wrote in post #1061602:

[#395787] Changing self class from inside a method?? — David Madison <lists@...>

Let's start off with the assumption I want a method that allows an

10 messages 2012/05/22

[#395841] Memory-efficient set of Fixnums — George Dupre <lists@...>

Hi,

25 messages 2012/05/23

[#395883] looking for a ruby idiom : r=foo; return r if r — botp <botpena@...>

Hi All,

11 messages 2012/05/24

[#395966] Am I justified to use a global variable if it must be used in all scopes? — Phil Stone <lists@...>

Hello,

12 messages 2012/05/27

[#396010] does this leak more than the size of the string via timing side channels — rooby shoez <lists@...>

string1 = "string"

16 messages 2012/05/29

[#396038] Is it possible to avoid longjmp in exceptions, Thread#kill, exit(), signals? — Iñaki Baz Castillo <ibc@...>

Hi, my Ruby C extension runs a C loop (libuv) without GVL. At some

8 messages 2012/05/29

Re: A million reasons why Encoding was a mistake

From: Robert Klemme <shortcutter@...>
Date: 2012-05-18 08:02:02 UTC
List: ruby-talk #395687
On Wed, May 16, 2012 at 3:02 PM, Brian Candler <lists@ruby-forum.com> wrote:

> The issue is not so much that radiant is broken, but that ruby 1.9 is.
> It has both a broken philosophy (that strings of bytes should always be
> treated as characters in some dynamic encoding)

I think you are being unfair: 1.9 has to deal with the history and
actually 1.8's was broken because of its weak i18n support.  1.9 tries
to evolve from that basis.  If I set encodings properly on streams and
$stdin, $stderr and $stdout things work just fine.

Also, if 1.9 was really that broken we would be seeing much more
postings with encoding issues here.  But apparently most people get by
with 1.9 pretty well which I would take as data point indicating that
it cannot be completely broken as you suggest.

You can even ignore the fact that internally String stores data as
bytes.  For many applications this is just an implementation detail of
String.  The encoding is typically not dynamic because one normally
does not use #force_encoding which will simply unconditionally
overwrite the encoding.

> and a half-baked
> implementation (e.g. which can't convert accented characters from
> uppercase to lowercase).

Well, that's just lacking completeness in a feature - you could also
call it a "bug".  But that is something different than "broken
philosophy".

> There also remains a total lack of official
> specification or documentation. I speak as someone who has attempted to
> reverse-engineer it.

I get by pretty well with the current situation.  There's also what
James wrote at
http://blog.grayproductions.net/categories/character_encodings

> As for "there is a set of simple rules to make your work on 1.9.3
> painless", what this really is saying is "to make your program run
> reliably under ruby 1.9 you have to do magic incantations W, X, Y and
> Z", none of which was necessary in ruby 1.8. What's worse is that
> without these incantations, your app or library or test suite may run
> just fine on your machine, but crash on someone else's, as illustrated
> by the OP.

You make it sound like witch magic.  But it isn't.  My set of rules is
pretty small:

1. Take care of encodings when opening files (i.e. set encoding).
2. Convert all Strings that need to be compared to the same encoding.
(For that setting Encoding.default_internal is often sufficient).
3. Test (but that's a general rule)

The problems usually occur because file metadata does not contain
encoding information.  So it must come from somewhere else.  And that
process is not generally standardized.  We have encoding information
in HTTP and MIME but that is lost once a file is stored somewhere and
one does not take special measures to keep that information.  But this
is a general issue and cannot be attributed to 1.9.

> With ruby 1.9, writing correct programs and giving them sufficient test
> coverage is more work than it was before. Do you run your test suite
> multiple times with different settings of LC_ALL in the environment? If
> not, you should.

Well, obviously: there is a new feature (encoding) which affects *all*
IO.  1.8 versions didn't have it and would happily treat anything as
proper string even though it wasn't properly encoded.  The fact that
they "just worked" does not mean that they necessarily worked correct.
 1.9 is as easy to use when constantly in the same locale environment.
 If something is to be released into the public then of course more
testing should be done.

Cheers

robert

-- 
remember.guy do |as, often| as.you_can - without end
http://blog.rubybestpractices.com/

In This Thread