summaryrefslogtreecommitdiffhomepage
AgeCommit message (Collapse)Author
2021-08-22Merge pull request #5536 from dearblue/random-seedYukihiro "Matz" Matsumoto
Stirs internal state when `seed` is set in `Random`
2021-08-21Stirs internal state when `seed` is set in `Random`dearblue
This is to avoid the approximation of `Random#rand` when `seed`s are close together. For example, the first `#rand` values after doing `Random#srand(0)` and `Random#srand(1)` are very similar. Below is the sequence of mruby before this patch was given a `seed` of `0...20`: ```console % bin/mruby -e 'r = Random.new; 20.times { |i| r.srand(i); puts "seed=%2d %s" % [i, 10.times.map { "%0.3f" % r.rand }.join(" ")] }' seed= 0 0.643 0.585 0.198 0.732 0.087 0.605 0.548 0.468 0.573 0.966 seed= 1 0.643 0.585 0.198 0.607 0.370 0.605 0.633 0.593 0.395 0.439 seed= 2 0.643 0.585 0.197 0.981 0.652 0.730 0.875 0.713 0.529 0.269 seed= 3 0.643 0.585 0.198 0.857 0.934 0.730 0.960 0.216 0.286 0.523 seed= 4 0.643 0.585 0.197 0.231 0.217 0.605 0.959 0.958 0.478 0.482 seed= 5 0.643 0.585 0.197 0.106 0.249 0.605 0.044 0.330 0.925 0.047 seed= 6 0.643 0.585 0.197 0.481 0.781 0.731 0.285 0.960 0.804 0.725 seed= 7 0.643 0.585 0.197 0.356 0.813 0.731 0.370 0.711 0.937 0.448 seed= 8 0.643 0.585 0.198 0.732 0.329 0.108 0.243 0.974 0.766 0.936 seed= 9 0.643 0.585 0.198 0.607 0.611 0.108 0.827 0.102 0.962 0.597 seed=10 0.643 0.585 0.198 0.981 0.393 0.233 0.569 0.723 0.472 0.805 seed=11 0.643 0.585 0.198 0.857 0.676 0.233 0.154 0.222 0.603 0.371 seed=12 0.643 0.585 0.198 0.231 0.458 0.108 0.654 0.979 0.928 0.577 seed=13 0.643 0.585 0.198 0.106 0.490 0.108 0.239 0.355 0.749 0.831 seed=14 0.643 0.585 0.198 0.481 0.523 0.233 0.981 0.486 0.505 0.131 seed=15 0.643 0.585 0.198 0.356 0.555 0.234 0.565 0.233 0.011 0.666 seed=16 0.643 0.585 0.197 0.730 0.573 0.611 0.904 0.512 0.971 0.153 seed=17 0.643 0.585 0.197 0.605 0.855 0.611 0.240 0.636 0.041 0.509 seed=18 0.643 0.585 0.196 0.979 0.137 0.736 0.229 0.765 0.674 0.832 seed=19 0.643 0.585 0.197 0.855 0.420 0.736 0.566 0.268 0.183 0.219 ```
2021-08-21etc.c: clear `mrb_value` if `sizeof(void*)` is bigger than `sizeof(mrb_float)`.Yukihiro "Matz" Matsumoto
2021-08-21test/float.rb: avoid `1.0e16` in tests without precision specified.Yukihiro "Matz" Matsumoto
2021-08-21mruby-test/driver.c: change `FLOAT_TOLERANCE` bigger for inline floats.Yukihiro "Matz" Matsumoto
2021-08-21boxing_word.h: embed `mrb_float` in `mrb_value` if possible.Yukihiro "Matz" Matsumoto
Embedding reduce memory consumption, sacrificing precision. It clips least significant 2 bits from `mrb_float`, so if you need to keep float precision, define `MRB_USE_FLOAT_FULL_PRECISION`. `MRB_WORD_BOXING` and `MRB_INT64`: `mrb_float` (`double`) is embedded in `mrb_value` clipped last 2 bits. `MRB_WORD_BOXING` and `MRB_INT64` and `MRB_USE_FLOAT_FULL_PRECISION`: `mrb_float` is allocated in the heaps wrapped by `struct RFloat`. `MRB_WORD_BOXING` and `MRB_INT32` and `MRB_USE_FLOAT32`: `mrb_float` (`float`) is embedded in `mrb_value` clipped last 2 bits. In addition, to reserve bit space in the `mrb_value`, maximum inline symbol length become 4 (instead of 5) in the configuration. `MRB_WORD_BOXING` and `MRB_INT32`: Assume `MRB_USE_FLOAT_FULL_PRECISION` and allocate Float values in heap.
2021-08-21Merge pull request #5533 from dantecatalfamo/serenity-32bit-crossbuildYukihiro "Matz" Matsumoto
Add SerenityOS crossbuild
2021-08-20Specify potential values for SERENITY_ARCHDante Catalfamo
2021-08-20Replace 32-bit serenity config with 64-bit compatible version.Dante Catalfamo
2021-08-19Add serenity-32bit crossbuildDante Catalfamo
Cross compile mruby for SerenityOS (https://github.com/SerenityOS/serenity)
2021-08-19symbol.c: reduce memory by avoiding alignment gaps.Yukihiro "Matz" Matsumoto
In additions: * use bitmap for flags * BER integer compression for length
2021-08-19gc.c: remove unused `struct`s from `RVALUE`.Yukihiro "Matz" Matsumoto
2021-08-19value.h: fixed warnings on `__APPLE__`.Yukihiro "Matz" Matsumoto
2021-08-19value.h: enable `mrb_ro_data_p()` on `__linux__` and `__APPLE__`.Yukihiro "Matz" Matsumoto
Probably we should add conditions for FreeBSD, etc.
2021-08-18string.c: `mrb_str_to_cstr()` should always return a mutable string.Yukihiro "Matz" Matsumoto
2021-08-18debug.c: export integer compressing functions.Yukihiro "Matz" Matsumoto
- mrb_packed_int_len() - mrb_packed_int_encode() - mrb_packed_int_decode()
2021-08-17boxing_word.h: simplifies inline symbols on `MRB_64BIT`.Yukihiro "Matz" Matsumoto
2021-08-17pack.c: rename pack/unpack functions for readability.Yukihiro "Matz" Matsumoto
2021-08-17fixup! pack.c: reduce dispatch in `pack_unpack()`.Yukihiro "Matz" Matsumoto
2021-08-17pack.c: reduce dispatch in `pack_unpack()`.Yukihiro "Matz" Matsumoto
2021-08-16pack.c: fix `M` packing bug.Yukihiro "Matz" Matsumoto
2021-08-15AUTHORS: update. [ci skip]Yukihiro "Matz" Matsumoto
2021-08-14random.c: use `I` specifier for `mrb_get_args()`; ref #5530Yukihiro "Matz" Matsumoto
2021-08-14pack.c: fixed a overwriting bug in `pack_w` and `pack_M`.Yukihiro "Matz" Matsumoto
2021-08-14error.c: the error message may contain `NUL` character.Yukihiro "Matz" Matsumoto
2021-08-14Merge pull request #5532 from dantecatalfamo/rhel-doxygenYukihiro "Matz" Matsumoto
Add instructions for installing doxygen on RHEL/Fedora/CentOS
2021-08-13Add instructions for installing doxygen on RHEL/Fedora/CentOSDante Catalfamo
2021-08-13Merge pull request #5530 from dearblue/mrb_get_args-IYukihiro "Matz" Matsumoto
Check the class with `I` specifier of `mrb_get_args()`
2021-08-13Check the class with `I` specifier of `mrb_get_args()`dearblue
Previously, the `I` specifier only checked if the object was `MRB_TT_ISTRUCT`. So it was at risk of getting pointers to different C structs if multiple classes were to use the `MRB_TT_ISTRUCT` instance. Change this behavior and change the C argument corresponding to the `I` specifier to `(void *, struct RClass)`. This change is not compatible with the previous mruby. Please note that if the user uses the previous specifications, `SIGSEGV` may occur or the machine stack may be destroyed. resolve #5527
2021-08-13codegen.c: fixed a bug in `mrb_decode_insn()`.Yukihiro "Matz" Matsumoto
2021-08-13codegen.c: add a comment that notice `rewind_pc` calling convention.Yukihiro "Matz" Matsumoto
`rewind_pc` should not be called when `s->pc` is `0` (top).
2021-08-13codegen.c: refactor `mrb_last_insn()`.Yukihiro "Matz" Matsumoto
Last commit made `mrb_decode_insn()` to take `NULL` as `pc`.
2021-08-13codegen.c: `mrb_prev_pc` can return `NULL` at the top of `iseq`.Yukihiro "Matz" Matsumoto
2021-08-12test/eval.c: add test for #5528Yukihiro "Matz" Matsumoto
2021-08-12Revert "Drop unnecessary upper procs linked from class/module/def syntax"Yukihiro "Matz" Matsumoto
Fix #5528 This reverts commit 59201b59046b9e73c309508350cd3c0fafd20e4d; #5497
2021-08-12class.c: `const_missing` do not have to be in the backtrace; ref #5528Yukihiro "Matz" Matsumoto
2021-08-11codegen.c: avoid signedness warning of int comparison.Yukihiro "Matz" Matsumoto
2021-08-11codegen.c: avoid cross initialization of `mrb_insn_data`.Yukihiro "Matz" Matsumoto
2021-08-11codedump.c: print local variable name for `ADDI/SUBI/ instructions.Yukihiro "Matz" Matsumoto
Recent peephole optimization made `ADDI/SUBI` destinations possibly local variables.
2021-08-11codegen.c: more peephole optimization.Yukihiro "Matz" Matsumoto
`a=10; a+=1` to generate: ``` 1 000 OP_LOADI R1 11 ; R1:a ``` instead of: ``` 1 000 OP_LOADI R1 10 ; R1:a 1 003 OP_MOVE R2 R1 ; R1:a 1 006 OP_ADDI R2 1 1 009 OP_MOVE R1 R2 ; R1:a ```
2021-08-11Merge pull request #5526 from ↵Yukihiro "Matz" Matsumoto
mruby/dependabot/github_actions/github/super-linter-4.6.1 build(deps): bump github/super-linter from 4.6.0 to 4.6.1
2021-08-10build(deps): bump github/super-linter from 4.6.0 to 4.6.1dependabot[bot]
Bumps [github/super-linter](https://github.com/github/super-linter) from 4.6.0 to 4.6.1. - [Release notes](https://github.com/github/super-linter/releases) - [Commits](https://github.com/github/super-linter/compare/v4.6.0...v4.6.1) --- updated-dependencies: - dependency-name: github/super-linter dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <[email protected]>
2021-08-10Merge pull request #5524 from dearblue/gem-headersYukihiro "Matz" Matsumoto
Expose all header files of the gems for small compilation
2021-08-09Expose all header files of the gems for small compilationdearblue
After building mruby, if the user compiles and links to `libmruby.a`, expose the included directory of the captured gems. This is a change to the `<build-dir> /lib/libmruby.flags.mak` file and will result in being added to `bin/mruby-config --cflags`. This eliminates the need for the user to look up the path and add the compiler flag if the user wants to take advantage of her gems publishing features. In the main build with `rake CONFIG=...`, there is no problem because it can only be seen from the gems that depends directly and indirectly as before. However, when compiling independently by the user using `bin/mruby-config`, a header file name collision may occur if a unique header directory is added.
2021-08-09Merge pull request #5525 from jbampton/pre-commit-autoupdateYukihiro "Matz" Matsumoto
pre-commit autoupdate
2021-08-09pre-commit autoupdateJohn
https://pre-commit.com/#pre-commit-autoupdate
2021-08-09Merge pull request #5522 from dearblue/pack-EOFYukihiro "Matz" Matsumoto
Fixed compilation error of "mruby-pack" with `MRB_NO_STDIO`
2021-08-08Merge pull request #5523 from jbampton/patch-1Yukihiro "Matz" Matsumoto
docs: fix case of mruby
2021-08-07docs: fix case of mrubyJohn Bampton
2021-08-07Fixed compilation error of "mruby-pack" with `MRB_NO_STDIO`dearblue