diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-05-05 11:19:16 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-05-05 12:07:37 +0000 |
commit | b485aab7e71c1625cfc27e0f92c9509f42378458 (patch) | |
tree | ae9abe108601079d1679194de237c9a435ae5b55 /web/server/h2o/libh2o/deps/mruby/doc/limitations.md | |
parent | Adding upstream version 1.44.3. (diff) | |
download | netdata-b485aab7e71c1625cfc27e0f92c9509f42378458.tar.xz netdata-b485aab7e71c1625cfc27e0f92c9509f42378458.zip |
Adding upstream version 1.45.3+dfsg.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'web/server/h2o/libh2o/deps/mruby/doc/limitations.md')
-rw-r--r-- | web/server/h2o/libh2o/deps/mruby/doc/limitations.md | 208 |
1 files changed, 0 insertions, 208 deletions
diff --git a/web/server/h2o/libh2o/deps/mruby/doc/limitations.md b/web/server/h2o/libh2o/deps/mruby/doc/limitations.md deleted file mode 100644 index db8db9a5c..000000000 --- a/web/server/h2o/libh2o/deps/mruby/doc/limitations.md +++ /dev/null @@ -1,208 +0,0 @@ -# Limitations and Differences - -The philosophy of mruby is to be a lightweight implementation of -the Ruby ISO standard. These two objectives are partially contradicting. -Ruby is an expressive language with complex implementation details which -are difficult to implement in a lightweight manner. To cope with this, -limitations to the "Ruby Compatibility" are defined. - -This document is collecting these limitations. - -## Integrity - -This document does not contain a complete list of limitations. -Please help to improve it by submitting your findings. - - -## ```1/2``` gives ```0.5``` - -Since mruby does not have ```Bignum```, bigger integers are represented -by ```Float``` numbers. To enhance interoperability between ```Fixnum``` -and ```Float```, mruby provides ```Float#upto``` and other iterating -methods for the ```Float``` class. As a side effect, ```1/2``` gives ```0.5``` -not ```0```. - -## ```Array``` passed to ```puts``` - -Passing an Array to ```puts``` results in different output. - -```ruby -puts [1,2,3] -``` - -#### Ruby [ruby 2.0.0p645 (2015-04-13 revision 50299)] - -``` -1 -2 -3 -``` - -#### mruby [1.3.0 (2017-7-4)] - -``` -[1, 2, 3] -``` - -## ```Kernel.raise``` in rescue clause - -```Kernel.raise``` without arguments does not raise the current exception within -a rescue clause. - -```ruby -begin - 1 / 0 -rescue - raise -end -``` - -#### Ruby [ruby 2.0.0p645 (2015-04-13 revision 50299)] - -```ZeroDivisionError``` is raised. - -#### mruby [1.3.0 (2017-7-4)] - -No exception is raised. - -## Check of infinite recursion - -mruby does not check infinite recursion across C extensions. - -```ruby -def test; eval 'test'; end; test -``` - -#### Ruby [ruby 2.0.0p645 (2015-04-13 revision 50299)] - -```SystemStackError``` is raised. - -#### mruby [1.3.0 (2017-7-4)] - -Segmentation fault. - -## Fiber execution can't cross C function boundary - -mruby's ```Fiber``` is implemented in a similar way to Lua's co-routine. This -results in the consequence that you can't switch context within C functions. -Only exception is ```mrb_fiber_yield``` at return. - -## ```Array``` does not support instance variables - -To reduce memory consumption ```Array``` does not support instance variables. - -```ruby -class Liste < Array - def initialize(str = nil) - @feld = str - end -end - -p Liste.new "foobar" -``` - -#### Ruby [ruby 2.0.0p645 (2015-04-13 revision 50299)] - -``` [] ``` - -#### mruby [1.3.0 (2017-7-4)] - -```ArgumentError``` is raised. - -## Method visibility - -For simplicity reasons no method visibility (public/private/protected) is -supported. - -```ruby -class VisibleTest - - def public_method; end - - private - def private_method; end - -end - -p VisibleTest.new.respond_to?(:private_method, false) -p VisibleTest.new.respond_to?(:private_method, true) -``` - -#### Ruby [ruby 2.0.0p645 (2015-04-13 revision 50299)] - -``` -false -true -``` - -#### mruby [1.3.0 (2017-7-4)] - -``` -true -true -``` - -## defined? - -The ```defined?``` keyword is considered too complex to be fully -implemented. It is recommended to use ```const_defined?``` and -other reflection methods instead. - -```ruby -defined?(Foo) -``` - -#### Ruby [ruby 2.0.0p645 (2015-04-13 revision 50299)] - -``` -nil -``` - -#### mruby [1.3.0 (2017-7-4)] - -```NameError``` is raised. - -## ```alias``` on global variables - -Aliasing a global variable works in CRuby but is not part -of the ISO standard. - -```ruby -alias $a $__a__ -``` - -#### Ruby [ruby 2.0.0p645 (2015-04-13 revision 50299)] - -``` nil ``` - -#### mruby [1.3.0 (2017-7-4)] - -Syntax error - -## Operator modification - -An operator can't be overwritten by the user. - -```ruby -class String - def + - end -end - -'a' + 'b' -``` - -#### Ruby [ruby 2.0.0p645 (2015-04-13 revision 50299)] - -```ArgumentError``` is raised. -The re-defined ```+``` operator does not accept any arguments. - -#### mruby [1.3.0 (2017-7-4)] - -``` 'ab' ``` -Behavior of the operator wasn't changed. - -## ```Kernel.binding``` missing - -```Kernel.binding``` is not implemented as it is not in the -ISO standard. |