[perl #132874] writing to utf16 handle gives write_fhb error

[email protected] ("Zoffix Znet via RT")
Newsgroups perl.perl6.compiler
Message-ID <[email protected]>
On Fri, 16 Feb 2018 00:56:27 -0800, comdog wrote:
> This little program:
> 
>     my $fh = open 'test.txt', :w, :enc('utf16');
>     put "filehandle is using {$fh.encoding}";
>     $fh.put: 'Some text';
> 
> Gives this error:
> 
>     filehandle is using utf16
>     write_fhb requires a native array of uint8 or int8
> 
> ----
> This is Rakudo Star version 2018.01 built on MoarVM version 2018.01
> implementing Perl 6.c


Looks like MoarVM doesn't fully support utf-16 yet (the exception is from MVM_io_read_bytes that just throws unless it's handed a 8-bit buf)

Slightly golfed version:

    $ ./perl6 -e '"t.t".IO.open(:w :bin).write: utf16.new: 1, 2, 3'
    write_fhb requires a native array of uint8 or int8
      in block <unit> at -e line 1

    $ ./perl6 -e '"t.t".IO.open(:w :bin).write: utf32.new: 1, 2, 3'
    write_fhb requires a native array of uint8 or int8
      in block <unit> at -e line 1

    $ ./perl6 -e '"t.t".IO.open(:w :bin).write: buf32.new: 1, 2, 3'
    write_fhb requires a native array of uint8 or int8
      in block <unit> at -e line 1

Dies on read too, but with a more useful message:

    $ ./perl6 -e '"LICENSE".IO.open(:enc<utf-16>).slurp.say'
    Streaming decode NYI for encoding 4
      in block <unit> at -e line 1

Works fine on JVM backend.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.