diff --git a/Changes b/Changes index 49aada6..d56f007 100644 --- a/Changes +++ b/Changes @@ -2,6 +2,11 @@ Revision history for ParaSeq {{$NEXT}} +0.2.6 2024-08-19T21:28:27+02:00 + - Make sure we don't crash on trying to resume an unresumable + exception. This hopefully will help finding some race conditions + in clients such as "rak" + 0.2.5 2024-07-26T23:58:45+02:00 - Make sure that dynamic variables in the current scope are visible by the code that is being hyperized or racified. diff --git a/META6.json b/META6.json index d0e227a..ee278e8 100644 --- a/META6.json +++ b/META6.json @@ -25,5 +25,5 @@ ], "test-depends": [ ], - "version": "0.2.5" + "version": "0.2.6" } diff --git a/lib/ParaSeq.rakumod b/lib/ParaSeq.rakumod index 78efb46..f5b5967 100644 --- a/lib/ParaSeq.rakumod +++ b/lib/ParaSeq.rakumod @@ -793,7 +793,7 @@ class ParaSeq is Seq { $!catch ?? $!SCHEDULER.cue: &code, :catch({ nqp::push($exceptions,$_); - .resume + try .resume; }) !! $!SCHEDULER.cue: &code } diff --git a/run-tests b/run-tests index 7ac0c9c..a833103 100644 --- a/run-tests +++ b/run-tests @@ -12,12 +12,12 @@ say "Testing { my @failed; my $done = 0; -sub process($proc) { +sub process($proc, $filename) { if $proc { $proc.out.slurp; } else { - @failed.push($_); + @failed.push($filename); if $proc.out.slurp -> $stdout { my @lines = $stdout.lines; with @lines.first( @@ -38,14 +38,14 @@ sub process($proc) { sub install() { my $zef := $*DISTRO.is-win ?? 'zef.bat' !! 'zef'; my $proc := run $zef, "install", ".", "--verbose", "--/test", :out,:err,:merge; - process($proc); + process($proc, "*installation*"); } sub test-dir($dir) { for $dir.IO.dir(:test(*.ends-with: '.t' | '.rakutest')).map(*.Str).sort { say "=== $_"; my $proc := run "raku", "--ll-exception", "-I.", $_, :out,:err,:merge; - process($proc); + process($proc, $_); $done++; } } @@ -55,7 +55,7 @@ test-dir("xt") if $author && "xt".IO.e; install if $install; if @failed { - say "FAILED: {+@failed} of $done:"; + say "\nFAILED: {+@failed} of $done:"; say " $_" for @failed; exit +@failed; }