konpeito 0.2.4 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: eb29f99bc1ae9fcdcf859aaea0f04974db8a8f42ddfa989c5a07d6e722d04a5e
4
- data.tar.gz: f3ae88ae17967ee5241737159a53781fcdc33894f6ab122af4cc2e58a8ef56f9
3
+ metadata.gz: 1fe9ef9f2b988dc2d9751cecb6f53c2828e1e0d412cecc897557d7988e967b48
4
+ data.tar.gz: 68b6e211a60e31b48b61858b62902229b0980e786147b2e4427688f169c0caea
5
5
  SHA512:
6
- metadata.gz: 8a267485ba1745ee5ebcf07be2d9235e4f8e6acb112292132943c2a484ec680f0af59ada1c0417326ad5765e1baeade52bcaf0b7d32de8bc1a1dcda92128391d
7
- data.tar.gz: e162318a4fbe08e1022218a800ece9f8b6b6d2ad362b63ee8348ffc369772ce3f5f477432a6df08af69fd90b429f2f93fbaafb0619f5ab5bfcf5521a40c83780
6
+ metadata.gz: 9dbf1f9e6edffb5e9e91af5398620fa96218f2ddde0cddebfa31ab4b90a42c0206cc71d24a6e2035dfd34f3695b7ba5265aef606c91af1b3cdee430609f537de
7
+ data.tar.gz: 7e595a3ec330e9f359bd5dc412b7d3c9fe9e9a3bef0fde8632f7b35fbe4f9902b174a93a25b11a5ea1e5364983f4ec8d1a92ff3e78a0aa5ebeeaf015bf2dd821
data/.rubocop.yml ADDED
@@ -0,0 +1,645 @@
1
+ plugins:
2
+ - rubocop-minitest
3
+ - rubocop-rake
4
+
5
+ AllCops:
6
+ TargetRubyVersion: 3.4
7
+ NewCops: enable
8
+ SuggestExtensions: false
9
+ Exclude:
10
+ - "vendor/**/*"
11
+ - "tools/**/*"
12
+ - "benchmark/**/*"
13
+ - "examples/**/*"
14
+ - "spec/**/*"
15
+ - "tmp/**/*"
16
+ - "*.gemspec"
17
+
18
+ # --- Layout ---
19
+ # Relaxed: compiler code has various indentation/alignment styles.
20
+
21
+ Layout/LineLength:
22
+ Enabled: false
23
+
24
+ Layout/EmptyLinesAroundClassBody:
25
+ Enabled: false
26
+
27
+ Layout/EmptyLinesAroundModuleBody:
28
+ Enabled: false
29
+
30
+ Layout/LeadingCommentSpace:
31
+ Enabled: false
32
+
33
+ Layout/ExtraSpacing:
34
+ Enabled: false
35
+
36
+ Layout/EmptyLineAfterGuardClause:
37
+ Enabled: false
38
+
39
+ Layout/CaseIndentation:
40
+ Enabled: false
41
+
42
+ Layout/EndAlignment:
43
+ Enabled: false
44
+
45
+ Layout/ElseAlignment:
46
+ Enabled: false
47
+
48
+ Layout/IndentationWidth:
49
+ Enabled: false
50
+
51
+ Layout/FirstHashElementIndentation:
52
+ Enabled: false
53
+
54
+ Layout/ArgumentAlignment:
55
+ Enabled: false
56
+
57
+ Layout/EmptyLineBetweenDefs:
58
+ Enabled: false
59
+
60
+ Layout/SpaceInsideHashLiteralBraces:
61
+ Enabled: false
62
+
63
+ Layout/HashAlignment:
64
+ Enabled: false
65
+
66
+ Layout/MultilineOperationIndentation:
67
+ Enabled: false
68
+
69
+ Layout/FirstArgumentIndentation:
70
+ Enabled: false
71
+
72
+ Layout/MultilineMethodCallBraceLayout:
73
+ Enabled: false
74
+
75
+ Layout/EmptyLines:
76
+ Enabled: false
77
+
78
+ Layout/SpaceAroundOperators:
79
+ Enabled: false
80
+
81
+ Layout/FirstArrayElementIndentation:
82
+ Enabled: false
83
+
84
+ Layout/MultilineMethodCallIndentation:
85
+ Enabled: false
86
+
87
+ Layout/IndentationConsistency:
88
+ Enabled: false
89
+
90
+ Layout/CommentIndentation:
91
+ Enabled: false
92
+
93
+ Layout/BlockAlignment:
94
+ Enabled: false
95
+
96
+ # --- Metrics ---
97
+ # Compiler code inherently has long methods and high complexity.
98
+
99
+ Metrics:
100
+ Enabled: false
101
+
102
+ # --- Naming ---
103
+
104
+ Naming/MethodName:
105
+ Enabled: false
106
+
107
+ Naming/AccessorMethodName:
108
+ Enabled: false
109
+
110
+ Naming/MethodParameterName:
111
+ Enabled: false
112
+
113
+ Naming/PredicatePrefix:
114
+ Enabled: false
115
+
116
+ Naming/PredicateMethod:
117
+ Enabled: false
118
+
119
+ Naming/VariableName:
120
+ Enabled: false
121
+
122
+ Naming/MemoizedInstanceVariableName:
123
+ Enabled: false
124
+
125
+ Naming/VariableNumber:
126
+ Enabled: false
127
+
128
+ # --- Style ---
129
+
130
+ Style/Documentation:
131
+ Enabled: false
132
+
133
+ Style/FrozenStringLiteralComment:
134
+ Enabled: false
135
+
136
+ Style/StringLiterals:
137
+ Enabled: false
138
+
139
+ Style/StringLiteralsInInterpolation:
140
+ Enabled: false
141
+
142
+ Style/GuardClause:
143
+ Enabled: false
144
+
145
+ Style/IfUnlessModifier:
146
+ Enabled: false
147
+
148
+ Style/ClassAndModuleChildren:
149
+ Enabled: false
150
+
151
+ Style/OptionalBooleanParameter:
152
+ Enabled: false
153
+
154
+ Style/CaseLikeIf:
155
+ Enabled: false
156
+
157
+ Style/MissingRespondToMissing:
158
+ Enabled: false
159
+
160
+ Style/OpenStructUse:
161
+ Enabled: false
162
+
163
+ Style/SelfAssignment:
164
+ Enabled: false
165
+
166
+ Style/GlobalVars:
167
+ Enabled: false
168
+
169
+ Style/NumericPredicate:
170
+ Enabled: false
171
+
172
+ Style/TrivialAccessors:
173
+ Enabled: false
174
+
175
+ Style/SafeNavigation:
176
+ Enabled: false
177
+
178
+ Style/ZeroLengthPredicate:
179
+ Enabled: false
180
+
181
+ Style/SymbolArray:
182
+ Enabled: false
183
+
184
+ Style/IdenticalConditionalBranches:
185
+ Enabled: false
186
+
187
+ Style/NonNilCheck:
188
+ Enabled: false
189
+
190
+ Style/ConditionalAssignment:
191
+ Enabled: false
192
+
193
+ Style/NegatedIf:
194
+ Enabled: false
195
+
196
+ Style/RedundantReturn:
197
+ Enabled: false
198
+
199
+ Style/RedundantSelf:
200
+ Enabled: false
201
+
202
+ Style/NilComparison:
203
+ Enabled: false
204
+
205
+ Style/WordArray:
206
+ Enabled: false
207
+
208
+ Style/TrailingCommaInArrayLiteral:
209
+ Enabled: false
210
+
211
+ Style/TrailingCommaInHashLiteral:
212
+ Enabled: false
213
+
214
+ Style/MultipleComparison:
215
+ Enabled: false
216
+
217
+ Style/EmptyElse:
218
+ Enabled: false
219
+
220
+ Style/InverseMethods:
221
+ Enabled: false
222
+
223
+ Style/Next:
224
+ Enabled: false
225
+
226
+ Style/SoleNestedConditional:
227
+ Enabled: false
228
+
229
+ Style/AccessorGrouping:
230
+ Enabled: false
231
+
232
+ Style/StderrPuts:
233
+ Enabled: false
234
+
235
+ Style/BlockDelimiters:
236
+ Enabled: false
237
+
238
+ Style/StringConcatenation:
239
+ Enabled: false
240
+
241
+ Style/OneClassPerFile:
242
+ Enabled: false
243
+
244
+ Style/EmptyMethod:
245
+ Enabled: false
246
+
247
+ Style/HashSyntax:
248
+ Enabled: false
249
+
250
+ Style/ExpandPathArguments:
251
+ Enabled: false
252
+
253
+ Style/MutableConstant:
254
+ Enabled: false
255
+
256
+ Style/SlicingWithRange:
257
+ Enabled: false
258
+
259
+ Style/RedundantStringEscape:
260
+ Enabled: false
261
+
262
+ Style/UnlessElse:
263
+ Enabled: false
264
+
265
+ Style/TernaryParentheses:
266
+ Enabled: false
267
+
268
+ Style/NumericLiterals:
269
+ Enabled: false
270
+
271
+ Style/FormatStringToken:
272
+ Enabled: false
273
+
274
+ Style/WhileUntilModifier:
275
+ Enabled: false
276
+
277
+ Style/IfInsideElse:
278
+ Enabled: false
279
+
280
+ Style/HashEachMethods:
281
+ Enabled: false
282
+
283
+ Style/Semicolon:
284
+ Enabled: false
285
+
286
+ Style/RescueStandardError:
287
+ Enabled: false
288
+
289
+ Style/NegatedIfElseCondition:
290
+ Enabled: false
291
+
292
+ Style/FormatString:
293
+ Enabled: false
294
+
295
+ Style/CombinableLoops:
296
+ Enabled: false
297
+
298
+ Style/CommentAnnotation:
299
+ Enabled: false
300
+
301
+ Style/RescueModifier:
302
+ Enabled: false
303
+
304
+ Style/RedundantHeredocDelimiterQuotes:
305
+ Enabled: false
306
+
307
+ Style/SuperArguments:
308
+ Enabled: false
309
+
310
+ Style/NegativeArrayIndex:
311
+ Enabled: false
312
+
313
+ Style/MapJoin:
314
+ Enabled: false
315
+
316
+ Style/MapToHash:
317
+ Enabled: false
318
+
319
+ Style/RegexpLiteral:
320
+ Enabled: false
321
+
322
+ Style/DoubleNegation:
323
+ Enabled: false
324
+
325
+ Style/PercentLiteralDelimiters:
326
+ Enabled: false
327
+
328
+ Style/RedundantParentheses:
329
+ Enabled: false
330
+
331
+ Style/AndOr:
332
+ Enabled: false
333
+
334
+ Style/ParallelAssignment:
335
+ Enabled: false
336
+
337
+ Style/SpecialGlobalVars:
338
+ Enabled: false
339
+
340
+ Style/ArrayJoin:
341
+ Enabled: false
342
+
343
+ Style/CollectionMethods:
344
+ Enabled: false
345
+
346
+ Style/HashTransformValues:
347
+ Enabled: false
348
+
349
+ Style/HashTransformKeys:
350
+ Enabled: false
351
+
352
+ Style/RedundantAssignment:
353
+ Enabled: false
354
+
355
+ Style/RedundantInterpolation:
356
+ Enabled: false
357
+
358
+ Style/ClassVars:
359
+ Enabled: false
360
+
361
+ Style/HashLikeCase:
362
+ Enabled: false
363
+
364
+ Style/GlobalStdStream:
365
+ Enabled: false
366
+
367
+ Style/RedundantBegin:
368
+ Enabled: false
369
+
370
+ Style/ArgumentsForwarding:
371
+ Enabled: false
372
+
373
+ Style/QuotedSymbols:
374
+ Enabled: false
375
+
376
+ Style/PerlBackrefs:
377
+ Enabled: false
378
+
379
+ Style/MapIntoArray:
380
+ Enabled: false
381
+
382
+ Style/ComparableBetween:
383
+ Enabled: false
384
+
385
+ Style/SymbolProc:
386
+ Enabled: false
387
+
388
+ Style/OrAssignment:
389
+ Enabled: false
390
+
391
+ Style/BitwisePredicate:
392
+ Enabled: false
393
+
394
+ Style/SafeNavigationChainLength:
395
+ Enabled: false
396
+
397
+ Style/PredicateWithKind:
398
+ Enabled: false
399
+
400
+ Style/RedundantArgument:
401
+ Enabled: false
402
+
403
+ Style/DefWithParentheses:
404
+ Enabled: false
405
+
406
+ Style/MultilineBlockChain:
407
+ Enabled: false
408
+
409
+ Style/SelectByKind:
410
+ Enabled: false
411
+
412
+ Style/MapToSet:
413
+ Enabled: false
414
+
415
+ Style/NestedTernaryOperator:
416
+ Enabled: false
417
+
418
+ Style/ReduceToHash:
419
+ Enabled: false
420
+
421
+ Style/NestedFileDirname:
422
+ Enabled: false
423
+
424
+ Style/ReturnNilInPredicateMethodDefinition:
425
+ Enabled: false
426
+
427
+ Style/MultilineTernaryOperator:
428
+ Enabled: false
429
+
430
+ Style/RedundantStructKeywordInit:
431
+ Enabled: false
432
+
433
+ Style/FetchEnvVar:
434
+ Enabled: false
435
+
436
+ Style/ExplicitBlockArgument:
437
+ Enabled: false
438
+
439
+ Style/EvenOdd:
440
+ Enabled: false
441
+
442
+ Style/SwapValues:
443
+ Enabled: false
444
+
445
+ Style/PartitionInsteadOfDoubleSelect:
446
+ Enabled: false
447
+
448
+ Style/EmptyStringInsideInterpolation:
449
+ Enabled: false
450
+
451
+ Style/RedundantException:
452
+ Enabled: false
453
+
454
+ Style/SelectByRegexp:
455
+ Enabled: false
456
+
457
+ Style/KeywordParametersOrder:
458
+ Enabled: false
459
+
460
+ Style/CommentedKeyword:
461
+ Enabled: false
462
+
463
+ # --- Security ---
464
+
465
+ Security/Eval:
466
+ Enabled: false
467
+
468
+ # --- Lint ---
469
+
470
+ Lint/UnusedMethodArgument:
471
+ Enabled: false
472
+
473
+ Lint/UnusedBlockArgument:
474
+ Enabled: false
475
+
476
+ Lint/AmbiguousOperatorPrecedence:
477
+ Enabled: false
478
+
479
+ Lint/DuplicateBranch:
480
+ Enabled: false
481
+
482
+ Lint/SuppressedException:
483
+ Enabled: false
484
+
485
+ Lint/UselessConstantScoping:
486
+ Enabled: false
487
+
488
+ Lint/UselessAssignment:
489
+ Enabled: false
490
+
491
+ Lint/MissingSuper:
492
+ Enabled: false
493
+
494
+ Lint/BooleanSymbol:
495
+ Enabled: false
496
+
497
+ Lint/ShadowingOuterLocalVariable:
498
+ Enabled: false
499
+
500
+ Lint/AmbiguousBlockAssociation:
501
+ Enabled: false
502
+
503
+ Lint/EmptyBlock:
504
+ Enabled: false
505
+
506
+ Lint/RedundantSafeNavigation:
507
+ Enabled: false
508
+
509
+ Lint/RedundantCopDisableDirective:
510
+ Enabled: false
511
+
512
+ Lint/HashCompareByIdentity:
513
+ Enabled: false
514
+
515
+ Lint/AssignmentInCondition:
516
+ Enabled: false
517
+
518
+ Lint/AmbiguousOperator:
519
+ Enabled: false
520
+
521
+ Lint/FloatComparison:
522
+ Enabled: false
523
+
524
+ Lint/RedundantRequireStatement:
525
+ Enabled: false
526
+
527
+ Lint/DeprecatedConstants:
528
+ Enabled: false
529
+
530
+ Lint/UselessMethodDefinition:
531
+ Enabled: false
532
+
533
+ Lint/NonAtomicFileOperation:
534
+ Enabled: false
535
+
536
+ Lint/DuplicateCaseCondition:
537
+ Enabled: false
538
+
539
+ Lint/UnderscorePrefixedVariableName:
540
+ Enabled: false
541
+
542
+ Lint/InterpolationCheck:
543
+ Enabled: false
544
+
545
+ Lint/UnreachableLoop:
546
+ Enabled: false
547
+
548
+ Lint/NonLocalExitFromIterator:
549
+ Enabled: false
550
+
551
+ Lint/ScriptPermission:
552
+ Enabled: false
553
+
554
+ Lint/ToJSON:
555
+ Enabled: false
556
+
557
+ Lint/NoReturnInBeginEndBlocks:
558
+ Enabled: false
559
+
560
+ Lint/AmbiguousRange:
561
+ Enabled: false
562
+
563
+ Lint/DuplicateMethods:
564
+ Enabled: false
565
+
566
+ # --- Minitest ---
567
+
568
+ Minitest/MultipleAssertions:
569
+ Enabled: false
570
+
571
+ Minitest/AssertEmptyLiteral:
572
+ Enabled: false
573
+
574
+ Minitest/EmptyLineBeforeAssertionMethods:
575
+ Enabled: false
576
+
577
+ Minitest/AssertPathExists:
578
+ Enabled: false
579
+
580
+ Minitest/AssertTruthy:
581
+ Enabled: false
582
+
583
+ Minitest/RefuteFalse:
584
+ Enabled: false
585
+
586
+ Minitest/AssertPredicate:
587
+ Enabled: false
588
+
589
+ Minitest/RefuteNil:
590
+ Enabled: false
591
+
592
+ Minitest/AssertNil:
593
+ Enabled: false
594
+
595
+ Minitest/AssertEqual:
596
+ Enabled: false
597
+
598
+ Minitest/AssertIncludes:
599
+ Enabled: false
600
+
601
+ Minitest/RefuteEqual:
602
+ Enabled: false
603
+
604
+ Minitest/AssertInstanceOf:
605
+ Enabled: false
606
+
607
+ Minitest/AssertMatch:
608
+ Enabled: false
609
+
610
+ Minitest/AssertOperator:
611
+ Enabled: false
612
+
613
+ Minitest/AssertKindOf:
614
+ Enabled: false
615
+
616
+ Minitest/LiteralAsActualArgument:
617
+ Enabled: false
618
+
619
+ Minitest/AssertRespondTo:
620
+ Enabled: false
621
+
622
+ Minitest/RefutePredicate:
623
+ Enabled: false
624
+
625
+ Minitest/RefutePathExists:
626
+ Enabled: false
627
+
628
+ Minitest/AssertInDelta:
629
+ Enabled: false
630
+
631
+ Minitest/AssertEmpty:
632
+ Enabled: false
633
+
634
+ Minitest/AssertWithExpectedArgument:
635
+ Enabled: false
636
+
637
+ # --- Bundler ---
638
+
639
+ Bundler/OrderedGems:
640
+ Enabled: false
641
+
642
+ # --- Security ---
643
+
644
+ Security/MarshalLoad:
645
+ Enabled: false
data/CHANGELOG.md CHANGED
@@ -5,6 +5,42 @@ All notable changes to Konpeito will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [0.3.0] - 2026-03-05
9
+
10
+ ### Added
11
+ - GitHub Actions CI workflow (unit tests + conformance tests)
12
+ - `examples/README.md` — guide to all example files and how to run them
13
+ - gemspec metadata: `source_code_uri`, `documentation_uri`
14
+ - Milestone: successfully compiled and ran kumiki's `all_widgets_demo.rb` (20+ widget reactive GUI) as a CRuby extension
15
+ - Tutorial (`docs/tutorial.md`) with working examples for both CRuby and JVM backends
16
+ - Japanese translation of tutorial (`docs/tutorial-ja.md`)
17
+ - Shell completion scripts (`konpeito completion bash/zsh/fish`)
18
+ - `konpeito fmt` command — delegates to RuboCop (replaces removed Prism formatter)
19
+ - Just task runner configuration (`Justfile`)
20
+ - CLI UX improvements: did-you-mean suggestions, build hints, default source detection
21
+
22
+ ### Changed
23
+ - Language specification version updated from 0.1 to 0.3
24
+ - `.gitignore` hardened to exclude build artifacts (`*_init.c`, `*_debug.json`, example JARs)
25
+ - Removed scattered ad-hoc test scripts and build artifacts from project root
26
+ - README: replaced JVM maturity note with kumiki all_widgets_demo compilation milestone
27
+ - `konpeito deps` — now analyzes source file dependencies (JAR download moved to `--fetch` flag)
28
+ - README: benchmark section rewritten with ranges and honest notes on slower cases (pattern matching, NativeString)
29
+
30
+ ### Removed
31
+ - LSP server (`konpeito lsp`) — Ruby's existing LSPs (ruby-lsp, Steep) cover this adequately
32
+
33
+ ### Fixed
34
+ - JVM backend: phi type inference for instance variables with HM TypeVar pollution (ClassCastException fix)
35
+ - Thread callback protocol fallback and `visit_begin` guard for control flow
36
+ - Conformance test failures for thread capture, rescue, and JVM bare rescue
37
+ - CFG-based RPO block ordering in rescue try callbacks
38
+ - CRuby interop: gem require, kwargs+block, toplevel include ordering
39
+ - NativeString UTF-8 byte length (use `strlen` instead of `rb_str_length`)
40
+ - String operations optimization (`rb_obj_as_string`, `empty?` inline, `substr`/`split` direct call)
41
+ - GC-safe block capture for `&blk` methods (escape-cells strategy)
42
+ - Rescue callback escape-cells for method parameters and locals
43
+
8
44
  ## [0.2.4] - 2026-02-28
9
45
 
10
46
  ### Added
@@ -176,6 +212,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
176
212
  - `%a{extern}` - external C struct wrappers
177
213
  - `%a{simd}` - SIMD vectorization
178
214
 
215
+ [0.3.0]: https://github.com/i2y/konpeito/compare/v0.2.4...v0.3.0
179
216
  [0.2.4]: https://github.com/i2y/konpeito/compare/v0.2.3...v0.2.4
180
217
  [0.2.3]: https://github.com/i2y/konpeito/compare/v0.2.2...v0.2.3
181
218
  [0.2.2]: https://github.com/i2y/konpeito/compare/v0.2.1...v0.2.2