summaryrefslogtreecommitdiffhomepage
path: root/mrbgems
AgeCommit message (Collapse)Author
2021-02-06Reimplement mruby-catch; ref #5321dearblue
When there is a corresponding tag, the `RBreak` object is used to make a global jump. Like CRuby, it can't be caught by `rescue`. It is also the same as CRuby that it can be canceled in the middle by `ensure`. ### How to find the corresponding tag with `throw` The called `catch` method remains in the call stack, and the tag also remains in the stack at that time. So it is possible to find the called location by searching the two. Note that no method can be given to the `proc` object specified in `RBreak`. Therefore, inside the `catch` method, the argument block is called in a seemingly meaningless closure. Also, as a countermeasure against `alias` etc., the `proc` object, which is the body of the `catch` method, is saved when mrbgem is initialized.
2021-02-06MinGW does not need MSVC hack.Yukihiro "Matz" Matsumoto
Both MinGW and MSVC provide _WIN32 macro.
2021-02-06No need to check class definitiondearblue
Because now the `Struct` class is always defined when this file is included.
2021-02-06Fixed compile errors in `cmath.c` in MinGW and macOS.Yukihiro "Matz" Matsumoto
2021-02-06Make the argument of `Kernel#catch` optional as Ruby doesKOBAYASHI Shuji
Also implement the following changes. * Add tests * Use `Object#equal?` to compare tags for Ruby compatibility * Use `attr_reader`
2021-02-06Avoid implicit conversion from `mrb_float` to `mrb_complex`.Yukihiro "Matz" Matsumoto
2021-02-06Merge pull request #5322 from ↵Yukihiro "Matz" Matsumoto
shuujii/fix-message-of-ThrowCatchJump-in-mruby-catch-gem Fix message of `ThrowCatchJump` in `mruby-catch` gem
2021-02-06Reimplement complex division.Yukihiro "Matz" Matsumoto
2021-02-06Define `M_E` for some platforms.Yukihiro "Matz" Matsumoto
2021-02-06Update `mruby-cmath` to support MSVC complex.Yukihiro "Matz" Matsumoto
* Use `_Complex` instead of `complex` (MSYS2 do not support `complex`) * Use `_Dcomplex` instead of `_Complex` on MSCV * Avoid operator division and multiplication of complex
2021-02-05Fix message of `ThrowCatchJump` in `mruby-catch` gemKOBAYASHI Shuji
### Example ```ruby begin throw 1 rescue Exception => e puts e.message end ``` #### Before this patch: ```console $ bin/mruby example.rb uncaught throw :1 ``` #### After this patch (same as Ruby): ```console $ bin/mruby example.rb uncaught throw 1 ```
2021-02-05Add `mruby-cmath` gem to the core.Yukihiro "Matz" Matsumoto
This gem uses C99 `_Complex` features. You need a C compiler that supports `_Complex` to enable this gem. All `gcc`, `clang`, `VC` support `_Complex` so there should not be a big problem.
2021-02-05Add a few new API for complex access.Yukihiro "Matz" Matsumoto
2021-02-05Refactor method overriding.Yukihiro "Matz" Matsumoto
* Use `class_eval` instead of `instance_eval`. * Reduce `class_eval` calls * define `Numeric#i` * undefine `Complex#i`
2021-02-05Add `Complex#to_c` method.Yukihiro "Matz" Matsumoto
2021-02-03Avoid Heap Overflow in `heredoc_remove_indent`; fix #5316Yukihiro "Matz" Matsumoto
2021-02-01Allow more than 256 child `irep`; fix #5310Yukihiro "Matz" Matsumoto
We have introduced following new instructions. * `OP_LAMBDA16` * `OP_BLOCK16` * `OP_METHOD16` * `OP_EXEC16` Each instruction uses 16 bits operand for `reps` index. Since new instructions are added, `mruby/c` VM should be updated. Due to new instructions, dump format compatibility is lost, we have increased `RITE_BINARY_MAJOR_VER`. In addition, we have decreased the size of `refcnt` in `mrb_irep` from `uint32_t` to `uint16_t`, which is reasonably big enough.
2021-01-31Use `mrb_open_core()` instead of `mrb_open()` in `mrbc`KOBAYASHI Shuji
2021-01-29Remove unnecessary range confirmationdearblue
This is a correction based on the review by @matz. https://github.com/mruby/mruby/pull/5306#pullrequestreview-578378401
2021-01-29Fixed `String#unpack` to handle the highest range of integer valuesdearblue
Previously, problems occurred when the `fixnum` was exceeded. - 32-bit cpu mode with `MRB_WORD_BOXING` and `MRB_INT32`: ```console % bin/mruby -e 'p [0x7fffffff].pack("N").unpack("N")' trace (most recent call last): -e:1: cannot unpack to Integer: 2147483647 (RangeError) ``` - 64-bit cpu mode with `MRB_WORD_BOXING` and `MRB_INT64`: ```console % bin/mruby -e 'p [0x7fffffff_ffffffff].pack("q").unpack("q")' trace (most recent call last): -e:1: cannot unpack to Integer: 9223372036854775807 (RangeError) ```
2021-01-29Replace `mrb_intern_cstr` to `mrb_intern_lit`.Yukihiro "Matz" Matsumoto
2021-01-28Remove duplicated `--cflags`; [ci skip]Yukihiro "Matz" Matsumoto
2021-01-28Remove unnecessary bit shift in `rational_new_f`.Yukihiro "Matz" Matsumoto
2021-01-26Revert "Fix the wrong directory `host-bin` to `host/bin`."Yukihiro "Matz" Matsumoto
This reverts commit 34f82f24e941f36edc8d947a8a9300631b3121ff. Ref #5282
2021-01-26Change `mruby-config` to print usage on invalid arguments.Yukihiro "Matz" Matsumoto
Or no argument at all.
2021-01-26Fix the wrong directory `host-bin` to `host/bin`.Yukihiro "Matz" Matsumoto
Where `mruby-config` command should be generated.
2021-01-26Revert "Minimize the changes in #5277"Yukihiro "Matz" Matsumoto
This reverts commit dc51d89ac22acc60b9bfeed87115863565b74085.
2021-01-25Silence 'loss of data' warnings.Yukihiro "Matz" Matsumoto
2021-01-25Fix a bug for the case `frexp()` return `Infinity`.Yukihiro "Matz" Matsumoto
2021-01-25Should use a limit for 32 bit platform; ref 05a8cc44Yukihiro "Matz" Matsumoto
2021-01-24Define `RAT_INT_LIMIT` for 32 bit platforms.Yukihiro "Matz" Matsumoto
2021-01-24Prohibit `r` suffix after scientific notation (e.g. `1e10`).Yukihiro "Matz" Matsumoto
As CRuby does.
2021-01-24Detect integer overflow in `rational_new_f()`.Yukihiro "Matz" Matsumoto
2021-01-22Minimize the changes in #5277Yukihiro "Matz" Matsumoto
Instead of including `mruby/presym.h` everywhere, we provided the fallback `mruby/presym.inc` under `include/mruby` directory, and specify `-I<build-dir>/include` before `-I<top-dir>/include` in `presym.rake`. So even when someone drops `-I<build-dir>/include` in compiler options, it just compiles without failure.
2021-01-21Merge branch 'avoid-including-presym.inc-in-existing-header-files' of ↵Yukihiro "Matz" Matsumoto
https://github.com/shuujii/mruby into shuujii-avoid-including-presym.inc-in-existing-header-files
2021-01-21Fix a bug that `:_1` to cause syntax error; fix #5295Yukihiro "Matz" Matsumoto
2021-01-21Better error messages with yacc tokens.Yukihiro "Matz" Matsumoto
2021-01-21Silence gcc warning from `strncpy()`.Yukihiro "Matz" Matsumoto
2021-01-18Fix build error for mruby-bin-debuggerdearblue
This is a missing change in #5272. This issue was reported by @shuujii. https://github.com/mruby/mruby/pull/5272#issuecomment-761819737
2021-01-17Define `Rational#quo`; fix #5268Yukihiro "Matz" Matsumoto
2021-01-16Fix NULL pointer dereference with mruby-os-memsize and mruby-methoddearblue
If it gets an insubstantial method object with `obj.method`, it will raise a `SIGSEGV` with `ObjectSpace.memsize_of(method)`.
2021-01-15Avoid syntax error regarding colons in the expression; fix #5290Yukihiro "Matz" Matsumoto
Reported and inspired by @hasumikin; based on CRuby's `parse.y`.
2021-01-14Merge pull request #5273 from dearblue/fiberYukihiro "Matz" Matsumoto
Capture the return value of `Fiber.yield` via C; ref #5261
2021-01-13Rational denominator should not be zero.Yukihiro "Matz" Matsumoto
2021-01-12Capture the return value of `Fiber.yield` via C; ref #5261dearblue
2021-01-12Merge pull request #5289 from dearblue/sockaddr_unYukihiro "Matz" Matsumoto
Initialize all area of `struct sockaddr_un`
2021-01-12Initialize all area of `struct sockaddr_un`dearblue
Members of `struct sockaddr_un` are requesting the definitions of `sun_family` and `sun_path`. https://pubs.opengroup.org/onlinepubs/009696699/basedefs/sys/un.h.html But the other members are optional and environment dependent. In fact, other members are defined in the BSD series. from NetBSD-9.1 <https://github.com/NetBSD/src/blob/da504f75982b244b2288bc9970bbc203bd77a9c1/sys/sys/un.h#L49-L53> ```c struct sockaddr_un { unsigned char sun_len; /* sockaddr len excluding NUL */ sa_family_t sun_family; /* AF_UNIX */ char sun_path[104]; /* path name (gag) */ }; ```
2021-01-12Merge branch 'reorganize-ci' of https://github.com/dearblue/mruby into ↵Yukihiro "Matz" Matsumoto
dearblue-reorganize-ci
2021-01-12Silence Windows warnings (cast and `setmode`).Yukihiro "Matz" Matsumoto
2021-01-12Changed packing format of inline symbols.Yukihiro "Matz" Matsumoto
To make inline symbols packed in 30 bits.