Code Monkey home page Code Monkey logo

Comments (4)

SamSaffron avatar SamSaffron commented on August 15, 2024

I am all for adding proper UTF-16 support but this particular issue is nothing to do with conversion

 context.attach('echo', proc{|v| return v })

Should be

context.attach('echo', proc{|v| v })

return from a proc has very very confusing semantics ...

irb(main):007:0> @my_proc = proc{return "hi"}
=> #<Proc:0x007f211dbad7c8@(irb):7>
irb(main):008:0> def x; puts 1; @my_proc.call; puts 2; end
=> :x
irb(main):009:0> x
1
LocalJumpError: unexpected return

vs

irb(main):010:0> @my_lambda = lambda{return "hi"}
=> #<Proc:0x007f211db7ded8@(irb):10 (lambda)>
irb(main):011:0> def x; puts 1; @my_lambda.call; puts 2; end
=> :x
irb(main):012:0> x
1
2
=> nil

Use lambdas, not procs

from mini_racer.

seanmakesgames avatar seanmakesgames commented on August 15, 2024

Indeed, I'm not able to repro the issue with this simplified test, which means it's probably in my ruby code on the other side of the attached method somewhere.

Looks like after adjusting the test case, the 'malformed utf8' can travel safely to and from rubyland as I assume you discovered after fixing my typo.

I also have added some code to strip out invalid utf8 chars coming in from JS as a post-process operation.

There's probably a better way (use utf-16 encoded strings being passed into attached methods? maybe?)

Anyhow. Thanks for the assist.

from mini_racer.

SamSaffron avatar SamSaffron commented on August 15, 2024

I am totally open to adding utf16 support but it gets pretty hairy and we would need to be super careful not to make all string handling slower just cause we add support for it.

from mini_racer.

seanmakesgames avatar seanmakesgames commented on August 15, 2024

Yeah, it's a tough proposition, because in terms of stability, having all the strings that are passed into attached methods matching JS string formats should reduce friction at this barrier- but utf16 is definitely a heftier encoding--
does seem like it would be more performant to not change the encoding of the strings when traveling between rb&js though.

from mini_racer.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.