Все наследует метод clone
по умолчанию от Mu
, который делает поверхностное клонирование, но это не значит, что все имеет смысл клонировать. Это особенно касается объектов, которые могут содержать ссылки на вещи уровня ОС, такие как Proc
или IO::Handle
. Как человек, который разработал Proc::Async
, я могу с уверенностью сказать, что заставить его делать что-то полезное на clone
не было соображением дизайна. Я не проектировал Proc
, но подозреваю, что то же самое применимо.
Что касается ошибки, имейте в виду, что стандартная библиотека Perl 6 реализована в Perl 6 (во многом как в Java и .Net, но не так, как в Perl 5, где многие вещи, которые предоставляются по умолчанию, идут непосредственно к чему-то написанному в с). В данном конкретном случае Proc
реализован в терминах Proc::Async
. Rakudo пытается несколько обрезать трассировки стека, чтобы исключить вызовы внутри параметра, что обычно является преимуществом для пользователя языка, но в таких случаях это может быть немного менее полезно. Запуск Rakudo с флагом --ll-exception
предоставляет полную информацию и, таким образом, проясняет происходящее.