Commit Graph

18028 Commits

Author SHA1 Message Date
Yukihiro "Matz" Matsumoto f55bb0857a mruby-bin-mirb: add README with tab completion documentation
Co-authored-by: Claude <noreply@anthropic.com>
2025-12-11 18:09:10 +09:00
Yukihiro "Matz" Matsumoto 97d4d8f45b mruby-set: standardize block parameter spacing
changed block spacing from { | to {| for consistency.

Co-authored-by: Claude <noreply@anthropic.com>
2025-12-11 18:09:10 +09:00
Yukihiro "Matz" Matsumoto 4bef968452 mruby-method: standardize block parameter spacing
changed block spacing from { | to {| for consistency.

Co-authored-by: Claude <noreply@anthropic.com>
2025-12-11 18:09:10 +09:00
Yukihiro "Matz" Matsumoto 8b0a4519b1 mruby-enum-ext: fix remaining block parameter spacing
changed block spacing from method{ to method { for consistency.

Co-authored-by: Claude <noreply@anthropic.com>
2025-12-11 18:09:09 +09:00
Yukihiro "Matz" Matsumoto b7563c327b mruby-benchmark: standardize block parameter spacing
changed block spacing from { | to {| for consistency.

Co-authored-by: Claude <noreply@anthropic.com>
2025-12-11 18:09:09 +09:00
Yukihiro "Matz" Matsumoto 3cc4a77f49 mruby-socket: standardize block parameter spacing
changed block spacing from { | to {| for consistency.

Co-authored-by: Claude <noreply@anthropic.com>
2025-12-11 18:09:09 +09:00
Yukihiro "Matz" Matsumoto e6fa93929d mruby-io: standardize block parameter spacing
changed block spacing from { | to {| for consistency.

Co-authored-by: Claude <noreply@anthropic.com>
2025-12-11 18:09:09 +09:00
Yukihiro "Matz" Matsumoto 7cc41d5bc0 mruby-hash-ext: standardize block parameter spacing
changed block spacing from method{ to method { for consistency.

Co-authored-by: Claude <noreply@anthropic.com>
2025-12-11 18:09:09 +09:00
Yukihiro "Matz" Matsumoto 93cdb62985 mruby-struct: standardize block parameter spacing
changed block spacing from method{ to method { for consistency.

Co-authored-by: Claude <noreply@anthropic.com>
2025-12-11 18:09:09 +09:00
Yukihiro "Matz" Matsumoto 0d4695a91c mruby-enum-lazy: standardize block parameter spacing
changed block spacing from method{ to method { for consistency.

Co-authored-by: Claude <noreply@anthropic.com>
2025-12-11 18:09:09 +09:00
Yukihiro "Matz" Matsumoto 89237e9cf9 mruby-enum-ext: standardize block parameter spacing
changed block spacing from method{ to method { for consistency.

Co-authored-by: Claude <noreply@anthropic.com>
2025-12-11 18:09:08 +09:00
Yukihiro "Matz" Matsumoto bc24a32f2d enum.rb: standardize block parameter spacing
changed block spacing from method{ to method { for consistency.

Co-authored-by: Claude <noreply@anthropic.com>
2025-12-11 18:09:08 +09:00
Yukihiro "Matz" Matsumoto 722d4f77dd mruby-array-ext: standardize block parameter spacing
changed block spacing from { |param| to {|param| for consistency.

Co-authored-by: Claude <noreply@anthropic.com>
2025-12-11 18:09:08 +09:00
Yukihiro "Matz" Matsumoto 35bab8dfed hash.rb: standardize block parameter spacing
changed block spacing from {|param| to {|param| (space before brace)
for consistency with the most common pattern in the codebase.

Co-authored-by: Claude <noreply@anthropic.com>
2025-12-11 18:09:08 +09:00
Yukihiro "Matz" Matsumoto 4dedb120c8 mruby-enum-ext: add parentheses to respond_to? call
added parentheses to respond_to? call where the return value is used.

Co-authored-by: Claude <noreply@anthropic.com>
2025-12-11 18:09:08 +09:00
Yukihiro "Matz" Matsumoto 676ab238a2 mruby-complex: add parentheses to Math method calls
added parentheses to Math.hypot and Math.atan2 calls where the return
value is used.

Co-authored-by: Claude <noreply@anthropic.com>
2025-12-11 18:09:08 +09:00
Yukihiro "Matz" Matsumoto 6b2d0b3e0f numeric.rb: add parentheses to block.call
added parentheses to block.call where the return value is used.

Co-authored-by: Claude <noreply@anthropic.com>
2025-12-11 18:09:07 +09:00
Yukihiro "Matz" Matsumoto 1b85ad2bfe hash.rb: add parentheses to block.call
added parentheses to block.call where the return value is used.

Co-authored-by: Claude <noreply@anthropic.com>
2025-12-11 18:09:07 +09:00
Yukihiro "Matz" Matsumoto 0d7903694c mruby-enumerator: add parentheses to block.call
added parentheses to block.call calls where the return value is used.

Co-authored-by: Claude <noreply@anthropic.com>
2025-12-11 18:09:07 +09:00
Yukihiro "Matz" Matsumoto 171ad3fb4f mruby-array-ext: add parentheses to block.call
added parentheses to block.call where the return value is used.

Co-authored-by: Claude <noreply@anthropic.com>
2025-12-11 18:09:07 +09:00
Yukihiro "Matz" Matsumoto 75d7b8ed7c mruby-string-ext: add parentheses to to_enum call
added parentheses to to_enum call where the return value is used.

Co-authored-by: Claude <noreply@anthropic.com>
2025-12-11 18:09:07 +09:00
Yukihiro "Matz" Matsumoto 29644b0365 mruby-set: add parentheses to to_enum calls
added parentheses to all to_enum calls where the return value is used.

Co-authored-by: Claude <noreply@anthropic.com>
2025-12-11 18:09:07 +09:00
Yukihiro "Matz" Matsumoto 1fbace12a4 mruby-object-ext: add parentheses to to_enum call
added parentheses to to_enum call where the return value is used.

Co-authored-by: Claude <noreply@anthropic.com>
2025-12-11 18:09:07 +09:00
Yukihiro "Matz" Matsumoto 5f20013219 mruby-io: add parentheses to to_enum call
added parentheses to to_enum call where the return value is used,
explicitly specifying :each for readability.

Co-authored-by: Claude <noreply@anthropic.com>
2025-12-11 18:09:06 +09:00
Yukihiro "Matz" Matsumoto 6e67d64068 mruby-hash-ext: add parentheses to to_enum calls
added parentheses to all to_enum calls where the return value is used.

Co-authored-by: Claude <noreply@anthropic.com>
2025-12-11 18:09:06 +09:00
Yukihiro "Matz" Matsumoto 284dde6a3f mruby-enumerator: add parentheses to to_enum calls
added parentheses to all to_enum calls where the return value is used.

Co-authored-by: Claude <noreply@anthropic.com>
2025-12-11 18:09:06 +09:00
Yukihiro "Matz" Matsumoto 2e71944f2b mruby-enum-ext: add parentheses to to_enum calls
added parentheses to all to_enum calls where the return value is used.

Co-authored-by: Claude <noreply@anthropic.com>
2025-12-11 18:09:06 +09:00
Yukihiro "Matz" Matsumoto 531d5a76e5 mruby-enum-chain: add parentheses to to_enum call
added parentheses to to_enum call where the return value is used,
explicitly specifying :each for readability.

Co-authored-by: Claude <noreply@anthropic.com>
2025-12-11 18:09:06 +09:00
Yukihiro "Matz" Matsumoto fce4eba9b2 mruby-array-ext: add parentheses to to_enum calls
added parentheses to all to_enum calls where the return value is used.

Co-authored-by: Claude <noreply@anthropic.com>
2025-12-11 18:09:06 +09:00
Yukihiro "Matz" Matsumoto ec1f9860b1 mrblib: add parentheses to method calls with used return values
added parentheses to all `to_enum` and `super` calls where the return
value is used (returned, assigned, or passed to another method). this
makes the code style consistent with the guideline that method calls
should use parentheses when their return values are consumed.

changes:
- return to_enum :symbol -> return to_enum(:symbol)
- return to_enum :symbol, arg -> return to_enum(:symbol, arg)
- super message, name -> super(message, name)

affected files: 10error.rb, array.rb, enum.rb, hash.rb, kernel.rb,
numeric.rb, range.rb

Co-authored-by: Claude <noreply@anthropic.com>
2025-12-11 18:09:06 +09:00
Yukihiro "Matz" Matsumoto 4cf75fb035 mruby-bin-mirb: restrict evaluation to simple receivers
fixed a bug where tab completion on complex expressions like "d.new(1).a"
would corrupt local variables, causing them to become nil.

the root cause was that evaluating complex receiver expressions during tab
completion ran mrb_vm_run() without proper stack management (stack_keep)
and environment adjustment that mirb's main REPL loop performs. this
corrupted the local variable storage.

the fix restricts tab completion to only evaluate simple receiver
expressions (variable/constant names without operators or method calls).
complex expressions are skipped for completion. this means:
- works: d.<tab> completes methods of variable d
- works: String.<tab> completes methods of constant String
- skipped: d.new(1).<tab> provides no completion

this is a reasonable trade-off that prevents the corruption bug while
still supporting the most common completion scenarios.

also updated mirb_eval_receiver() to use the compiler context for proper
local variable resolution, with argument order matching mrb_parse_string.

Co-authored-by: Claude <noreply@anthropic.com>
2025-12-11 18:09:05 +09:00
Yukihiro "Matz" Matsumoto 2f152823f3 mruby-bin-mirb: add tab completion support
implements context-aware tab completion for mirb supporting all readline
variants (GNU readline, libedit, linenoise) with graceful degradation
when no readline library is available.

completion features:
- method names on objects (e.g., "hello".re<Tab> completes to reverse, replace)
- local variables from compiler context
- global variables via Ruby introspection
- constants and class names
- Ruby keywords

architecture:
- core completion engine is library-agnostic
- thin adapters for readline/libedit and linenoise
- context detection based on cursor position analysis
- safe receiver evaluation with exception handling
- proper word break characters so "String.new" works correctly

implementation adds:
- mirb_completion.h: interface definitions and data structures
- mirb_completion.c: complete implementation (~670 lines)
- mirb.c: integration with setup/cleanup calls

Co-authored-by: Claude <noreply@anthropic.com>
2025-12-11 18:09:05 +09:00
Yukihiro "Matz" Matsumoto 0aafb83374 mruby-bin-mirb: add MRUBY_MIRB_READLINE to control readline library selection
addresses #6626 where users building portable binaries need explicit control
over readline detection instead of auto-detection.

MRUBY_MIRB_READLINE values:
  auto (default) - auto-detect: try readline, then edit, then linenoise
  readline, gnu  - force GNU readline only
  edit, libedit  - force libedit only
  linenoise      - force linenoise only
  none, off, false, disabled - use plain input mode (no readline)

close #6626

Co-authored-by: Claude <noreply@anthropic.com>
2025-12-11 18:09:05 +09:00
Yukihiro "Matz" Matsumoto 9aa6f28eab mirb: show method context for errors from previous code
runtime errors now distinguish between:
- errors in current input: show relative line number
- errors from previously defined methods: show method context

examples:
1> a.foo
line 1: undefined method 'a' for Object (NoMethodError)

1> def foo
2*   bar
3* end
1> foo
(mirb):in foo: undefined method 'bar' for Object (NoMethodError)

this provides better context since method name is more useful
than line number for errors in previously defined code

Co-authored-by: Claude <noreply@anthropic.com>
2025-12-11 18:09:05 +09:00
Yukihiro "Matz" Matsumoto ac39b7d8ad mruby-bin-mirb: enhanced syntax error display
syntax errors now show:
- line:column format with relative line numbers (matching prompt)
- source line from user input
- caret indicator pointing to error position

example:
1> x = @@@
line 1:6: syntax error, unexpected invalid token
  x = @@@
        ^

multi-line example:
1> class Foo
2*   def bar
3*     x = @@@
line 3:6: syntax error, unexpected invalid token
      x = @@@
        ^

Co-authored-by: Claude <noreply@anthropic.com>
2025-12-11 18:09:05 +09:00
Yukihiro "Matz" Matsumoto 5a3f0e2e0b mruby-bin-mirb: add line numbers to multi-line prompts
add minimal line number decoration to prompts to help track position
within multi-line code blocks. format is 'N>' for initial line and
'N*' for continuation lines. line counter resets after each complete
evaluation for clarity and minimal visual noise.

example:
1> def foo
2*   x = 1
3* end
 => :foo
1> 1 + 1
 => 2

Co-authored-by: Claude <noreply@anthropic.com>
2025-12-11 18:09:05 +09:00
Yukihiro "Matz" Matsumoto 2f68c9ebae Merge pull request #6681 from khasinski/cosmopolitan-build-config 2025-12-10 12:30:24 +09:00
Chris Hasiński c10a9ec571 Add Cosmopolitan Libc build configuration
Add build configuration for Cosmopolitan Libc, enabling mruby to be
compiled as an "Actually Portable Executable" (APE) that runs natively
on multiple platforms from a single binary.

Supported platforms:
- Linux (x86_64, ARM64)
- macOS (x86_64, ARM64)
- Windows (x86_64)
- FreeBSD (x86_64)
- OpenBSD (x86_64)
- NetBSD (x86_64)

Included binaries:
- mruby.com   - mruby interpreter
- mrbc.com    - bytecode compiler
- mirb.com    - interactive Ruby shell
- mrdb.com    - debugger
- mruby-strip.com - debug info stripper

Usage:
  COSMO_ROOT=~/cosmo rake MRUBY_CONFIG=cosmopolitan

The cosmocc toolchain can be downloaded from https://cosmo.zip/pub/cosmocc/
2025-12-09 19:01:31 +01:00
Yukihiro "Matz" Matsumoto 3b476621fe Merge pull request #6680 from mruby/dependabot/bundler/yard-0.9.38 2025-12-09 10:34:22 +09:00
dependabot[bot] 5fb11dee54 build(deps): bump yard from 0.9.37 to 0.9.38
Bumps [yard](https://github.com/lsegal/yard) from 0.9.37 to 0.9.38.
- [Release notes](https://github.com/lsegal/yard/releases)
- [Changelog](https://github.com/lsegal/yard/blob/main/CHANGELOG.md)
- [Commits](https://github.com/lsegal/yard/compare/v0.9.37...v0.9.38)

---
updated-dependencies:
- dependency-name: yard
  dependency-version: 0.9.38
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-08 14:07:48 +00:00
Yukihiro "Matz" Matsumoto f1fc5c7057 Merge pull request #6593 from jbampton/readme-upgrade 2025-12-08 10:07:35 +09:00
Yukihiro "Matz" Matsumoto 2341b7ebf5 Merge pull request #6679 from jbampton/pre-commit-autoupdate 2025-12-08 10:06:02 +09:00
Yukihiro "Matz" Matsumoto 00cf74295e Merge pull request #6678 from jbampton/separate-gha-workflows 2025-12-08 10:05:48 +09:00
John Bampton dbca200bc7 Fix markdown-link-check ignore 2 URL patterns 2025-12-07 11:00:17 +10:00
John Bampton a2523c6745 pre-commit autoupdate; update node and prettier 2025-12-07 10:19:04 +10:00
John Bampton 0838ef7abd README: Add Contributors Avatars, Star History, Table of Contents
https://www.star-history.com/

https://contrib.rocks

Added some more 💄 to the README which showcases some great statistics.

Both tools are popular and a lot of projects use them.
2025-12-07 09:55:07 +10:00
John Bampton 9835bf8473 Put ls-lint and pre-commit in separate workflow files
Standardizes all workflows into separate files.

Minor clean up of workflow name and add a docs link
2025-12-07 09:50:27 +10:00
Yukihiro "Matz" Matsumoto c136a476ee Merge pull request #6677 from jbampton/pre-commit-color-always 2025-12-06 21:56:26 +09:00
John Bampton 58264bedee gha: run pre-commit with --color=always
Minor enhancement for the GHA CI.

refs https://github.com/apache/cloudstack/pull/11977
2025-12-05 23:21:58 +10:00
Yukihiro "Matz" Matsumoto 4dc234c7a2 AUTHORS: update entries [ci skip] 2025-12-02 23:25:09 +09:00