summaryrefslogtreecommitdiffhomepage
path: root/mrbgems
AgeCommit message (Collapse)Author
2019-08-05Merge pull request #4614 from ↵Yukihiro "Matz" Matsumoto
shuujii/use-mrb_int-instead-of-to_int-in-mruby-numeric-ext Use `mrb_int()` instead of `to_int()` in `mruby-numeric-ext`
2019-08-05Merge pull request #4612 from dearblue/float-constsYukihiro "Matz" Matsumoto
Add constants for floating point number
2019-08-04Use `mrb_int()` instead of `to_int()` in `mruby-numeric-ext`KOBAYASHI Shuji
2019-08-04Add constants for floating point numberdearblue
2019-08-03Change second argument to `%l` of `mrb_vformat()` to `size_t` from `mrb_int`KOBAYASHI Shuji
- `size_t` is more commonly used. - `len` argument of `mrb_str_new()` is `size_t`. NOTE: The test for `%l` is temporarily disabled because adding a new type to `mrbgems/mruby-test/vformat.c` causes an error (memory error?) on Visual Studio 2017 in AppVeyor.
2019-08-03Merge pull request #4611 from shuujii/fix-mrb_vformat%f-with-MRB_USE_FLOATYukihiro "Matz" Matsumoto
Fix `mrb_vformat("%f")` with `MRB_USE_FLOAT`
2019-08-03Fix `mrb_vformat("%f")` with `MRB_USE_FLOAT`KOBAYASHI Shuji
It potentially not work when `mrb_float` is `float` because `float` variable in variable length arguments is promoted to `double`. Also I fixed build with `MRB_WITHOUT_FLOAT`.
2019-08-03Suppress compiler warnings for mruby-time; fix #4600dearblue
Warnings: - If `MRB_TIME_T_UINT` is defined, the compiler issues a warning with an integer comparison of different signs. - It is mentioned that the `usec` variable passed to the `mrb_to_time_t()` function may not be initialized
2019-08-02Change the `mrb_vformat` specifier `%d` for `int`KOBAYASHI Shuji
It potentially breaks, for example, in the case of `mrb_int` is 64-bit and more smaller type is passed by `%d`. In fact, the problem could become apparent when I used `%d` to `backtrace_location::lineno` in `src/backtrace.c:mrb_unpack_backtrace()` on AppVeyor. Therefore, change `%d` for `int` (not `mrb_int`) so that it can be used mostly without casting.
2019-08-01Add new specifiers/modifiers to format string of `mrb_vfromat()`KOBAYASHI Shuji
Format sequence syntax: %[modifier]specifier Modifiers: ----------+------------------------------------------------------------ Modifier | Meaning ----------+------------------------------------------------------------ ! | Convert to string by corresponding `inspect` instead of | corresponding `to_s`. ----------+------------------------------------------------------------ Specifiers: ----------+----------------+-------------------------------------------- Specifier | Argument Type | Note ----------+----------------+-------------------------------------------- c | char | d,i | mrb_int | f | mrb_float | l | char*, mrb_int | Arguments are string and length. n | mrb_sym | s | char* | Argument is NUL terminated string. t | mrb_value | Convert to type (class) of object. v,S | mrb_value | C | struct RClass* | T | mrb_value | Convert to real type (class) of object. Y | mrb_value | Same as `!v` if argument is `true`, `false` | | or `nil`, otherwise same as `T`. % | - | Convert to percent sign itself (no argument | | taken). ----------+----------------+-------------------------------------------- This change will increase the binary size, but replacing all format strings with new specifiers/modifiers will decrease the size because it reduces inline expansion of `mrb_obj_value()`, etc. at the caller.
2019-07-31Fix UTC offset representation in `Time#to_s` on some environments; ref #4604KOBAYASHI Shuji
Use own implementation to calculate UTC offset on Visual Studio 2015 or earlier or MinGW because `strftime("%z")` on these environments does not conform C99.
2019-07-30Merge pull request #4606 from shuujii/refine-message-to-skip-in-nested-assertYukihiro "Matz" Matsumoto
Refine message to `skip` in nested `assert`
2019-07-30Refine message to `skip` in nested `assert`KOBAYASHI Shuji
- I think "Info" is used only to `skip`, so change to "Skip". - Changed the default value of `assert` and specify the argument explicitly at the caller of `assert` because it is unnatural "Assertion failed" is output even though the assertion doesn't fail. == Example: def assert_foo(exp, act) assert do assert_equal exp[0], act[0] assert_equal exp[1], act[1] end end def assert_bar(exp, act) assert do skip end end def assert_baz(exp, act) assert do assert_equal exp, act assert_bar exp, act end end assert 'test#skip_in_nested_assert' do assert_baz 1, 1 end === Before this patch: ?.. Info: test#skip_in_nested_assert (core) - Assertion[1] Info: Assertion failed (core) - Assertion[1-2] Skip: Assertion failed (core) Total: 3 OK: 2 KO: 0 Crash: 0 Warning: 0 Skip: 1 === After this patch: ??? Skip: test#skip_in_nested_assert (core) - Assertion[1] Skip: assert (core) - Assertion[1-2] Skip: assert (core) Total: 3 OK: 0 KO: 0 Crash: 0 Warning: 0 Skip: 3
2019-07-29Fix Time#to_s encoding on WindowsSutou Kouhei
strftime() on Windows returns locale encoding time zone for "%z" even if MSDN says "%z" is "The offset from UTC in ISO 8601 format; no characters if time zone is unknown" in MSDN: https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/strftime-wcsftime-strftime-l-wcsftime-l?view=vs-2019 So we need to convert encoding of string from strftime().
2019-07-29Resolved conflicts in #4320Yukihiro "Matz" Matsumoto
2019-07-28Merge pull request #4602 from shuujii/remove-EnumeratorChain-initialize_copyYukihiro "Matz" Matsumoto
Remove `Enumerator::Chain#initialize_copy`
2019-07-28Define `#+` to `Enumerator` and `Enumerator#Chain` instead of `Enumerable`KOBAYASHI Shuji
2019-07-28Remove `Enumerator::Chain#initialize_copy`KOBAYASHI Shuji
I think `Enumerator::Chain#initialize_copy` is unnecessary because CRuby doesn't clone elements.
2019-07-28Drop dependency from `mruby-enumerator` to `mruby-enum-ext`KOBAYASHI Shuji
2019-07-28Merge pull request #4600 from dearblue/time-precisionYukihiro "Matz" Matsumoto
Fix the lack of precision for `Time`; ref d74355061
2019-07-27Fix the lack of precision for `Time`; ref d74355061dearblue
- `Time.local` and `Time.utc` are able to use with `MRB_INT16 + MRB_WITHOUT_FLOAT`. - `time_t` is converted directly from the Ruby object. - `time + sec` and` time - sec` are not affected by the precision of `mrb_float`. Similarly, calculations are possible with `MRB_INT16 + MRB_WITHOUT_FLOAT`.
2019-07-27Drop dependency from `mruby-enum-chain` to `mruby-enum-ext`KOBAYASHI Shuji
2019-07-27Merge pull request #4598 from dearblue/time-without-floatYukihiro "Matz" Matsumoto
Fix mruby-time with `MRB_WITHOUT_FLOAT`; ref d74355061
2019-07-27Fix line number bug; fix #4513Yukihiro "Matz" Matsumoto
Also fix the misfeature introduced in 23783a4, that ignores newlines between method chains.
2019-07-27Fix mruby-time with `MRB_WITHOUT_FLOAT`; ref d74355061dearblue
2019-07-27Merge pull request #4597 from ↵Yukihiro "Matz" Matsumoto
shuujii/drop-dependency-from-mruby-array-ext-to-mruby-enum-ext Drop dependency from `mruby-array-ext` to `mruby-enum-ext`
2019-07-27Merge pull request #4594 from ↵Yukihiro "Matz" Matsumoto
shuujii/move-NilClass-to_h-to-mruby-object-ext-from-mruby-enum-ext Move `NilClass#to_h` to `mruby-object-ext` from `mruby-enum-ext`
2019-07-26Drop dependency from `mruby-array-ext` to `mruby-enum-ext`KOBAYASHI Shuji
2019-07-25Refine `Array#(permutation|combination) test`KOBAYASHI Shuji
- No guarantees about the order in which the permutations/combinations are yielded. - Drop dependency on `Enumerator`.
2019-07-24Move `NilClass#to_h` to `mruby-object-ext` from `mruby-enum-ext`KOBAYASHI Shuji
2019-07-24Add `return` to silence a warning; ref #4593Yukihiro "Matz" Matsumoto
2019-07-24Use `MRB_TT_ISTRUCT` for `Random` to reduce memory.Yukihiro "Matz" Matsumoto
When the size of Xorshift128 seed (`sizeof(uint32)*4`) is bigger than ISTRUCT_DATA_SIZE, `Random` uses Xorshift96 instead.
2019-07-24Call `MRB_SET_INSTANCE_TT` for `Complex` and `Rational`.Yukihiro "Matz" Matsumoto
2019-07-23Add encoding argument to `Integral#chr`KOBAYASHI Shuji
Currently, `Integral#chr` in mruby changes behavior by `MRB_UTF8_STRING` setting. before this patch: $ bin/mruby -e 'p 171.chr' #=> "\xab" (`MRB_UTF8_STRING` is disabled) $ bin/mruby -e 'p 171.chr' #=> "«" (`MRB_UTF8_STRING` is enabled) This behavior is incompatible with Ruby, and a little inconvenient because it can't be interpreted as ASCII-8BIT with `MRB_UTF8_STRING`, I think. So add encoding argument according to Ruby. after this patch: $ bin/mruby -e 'p 171.chr' #=> "\xab" $ bin/mruby -e 'p 171.chr("ASCII-8BIT")' #=> "\xab" $ bin/mruby -e 'p 171.chr("UTF-8")' #=> "«" Allow only `String` for encoding because mruby doesn't have `Encoding` class, and `"ASCII-8BIT"` (`"BINARY"`) and `"UTF-8"` (only with `MRB_UTF8_STRING`) are valid value (default is `"ASCII-8BIT"`).
2019-07-22Merge pull request #4591 from ↵Yukihiro "Matz" Matsumoto
shuujii/integrate-Integral-chr-Fixnum-chr-to-mruby-string-ext Integrate `Integral#chr` (`Fixnum#chr`) to `mruby-string-ext`
2019-07-22Fix `mruby-time` to work with `MRB_WITHOUT_FLOAT`; ref #4576Yukihiro "Matz" Matsumoto
As a side effect, `mrb_time_at()` now takes `mrb_int` instead of `double` as time arguments.
2019-07-22Improve conflict error message of `Time` and `Math`; ref #4576Yukihiro "Matz" Matsumoto
2019-07-22Check conflicts with `Complex` and `MRB_WITHOUT_FLOAT`; ref #4576Yukihiro "Matz" Matsumoto
The Complex class needs `mrb_float` so that it does not work with `MRB_WITHOUT_FLOAT` anyway.
2019-07-22Switch random generator from Mersenne Twister to Xorshit128.Yukihiro "Matz" Matsumoto
Now `rand` can be used with `MRB_WITHOUT_FLOAT`; ref #4576
2019-07-21Integrate `Integral#chr` (`Fixnum#chr`) to `mruby-string-ext`KOBAYASHI Shuji
Because they're defined in both `mruby-string-ext` and `mruby-numeric-ext` (they seem more natural to define in N, but `mruby-string-ext` depends on `Integral#chr`).
2019-07-19Refine `String#chr` test and separate `Fixnum#chr` testKOBAYASHI Shuji
2019-07-18Avoid making top-level `env` in initialization code; ref #4581Yukihiro "Matz" Matsumoto
2019-07-17Merge branch 'master' into fix-range-min-with-mruby-range-extYukihiro "Matz" Matsumoto
2019-07-17Merge pull request #4586 from shuujii/revert-4300Yukihiro "Matz" Matsumoto
Revert #4300
2019-07-17Revert #4300KOBAYASHI Shuji
Originally, it was not necessary to change. I made mistake.
2019-07-17Fix `(fixnum_value ... float_value).min` with `mruby-range-ext`KOBAYASHI Shuji
Before this patch: $ bin/mruby -e 'p (2...4.0).min' #=> TypeError After this patch (same as CRuby and without `mruby-range-ext`): $ bin/mruby -e 'p (2...4.0).min' #=> 2
2019-07-17Allow `mruby-range-ext` to work with `MRB_WITHOUT_FLOAT`; ref 2add8641KOBAYASHI Shuji
2019-07-17Allow `mruby-range-ext` to work with `MRB_WITHOUT_FLOAT`; ref #4576Yukihiro "Matz" Matsumoto
2019-07-17Merge branch 'master' into i110/inspect-recursionYukihiro "Matz" Matsumoto
2019-07-16Merge pull request #4576 from dearblue/error-configurationYukihiro "Matz" Matsumoto
Error needed/conflicts configuration