sisshiki1969 / monoruby Goto Github PK
View Code? Open in Web Editor NEWRuby implementation with yet another JIT compiler.
License: Apache License 2.0
Ruby implementation with yet another JIT compiler.
License: Apache License 2.0
Currently we can accept super with arguments delegation only when super exists in a method scope.
We must support super in a block scope.
10.times { f a:100 } # => OK
super a:100 #=>OK
10.times { super a:100 } #=> "Expect end Got Punct(Colon)"
TODO: Support class definition with class names which have prefixes.
class Gem::Platform
end
SEGV occurs in the code below.
def m
i = 0
while i<30
i += 1
yield
end
end
m{}
a = [1,2,3]
b = []
10.times do
b.prepend(*a)
end
puts "#{b}"
CRuby: [1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3]
monoruby: [[1, 2, 3], [1, 2, 3], [1, 2, 3], [1, 2, 3], [1, 2, 3], [1, 2, 3], 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3]
TODO: Support class variables.
LoadConst
insn returns wrong value when base
exists because base
is not guarded.
module M
def initialize
puts self.class::C
end
end
class A
include M
C = 100
end
class B
include M
C = 200
end
A.new # => 100
B.new # => 200 but monoruby gets 100 currently.
But as documented here for best peak performance TruffleRuby JVM should be used.
The README doesn't mention anything about compatibility, but it seems worth having at least a sentence about it.
Does it run RubyGems
/Bundler
/Rails
? Does it have the Ruby standard library? C extensions?
In Ruby method call, when all conditions of
Currently, monoruby is not compatible with this behavior.
def f(a, b, *c)
puts "a:#{a} b:#{b} c:#{c}"
end
f("a", 42, 1000, x:100, y:200)
# => [Ruby] a:a b:42 c:[1000, {:x=>100, :y=>200}]
#=>[monoruby] a:a b:42 c:[1000]
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.