Декларатор пакета native
- это деталь реализации компилятора Rakudo Perl 6, а не часть языка Perl 6. Необходим некоторый механизм для выражения взаимосвязи между языковой средой исполнения и типами, такими как int32
и num64
, объявленными в стандартной библиотеке Perl 6. Для нативного типа был необходим мета-объект другого типа, и поскольку деклараторы пакетов (например, class
и role
) работают, будучи привязанными к мета-объектам определенного типа, введение для этой цели декларатора пакетов native
отличный способ запустить этот бит системы типов Perl 6.
Использование native
вне стандартной библиотеки никогда не было предназначено (что я могу сказать с уверенностью, потому что я изобрел механизм). Учитывая чувствительность к производительности нативных типов, разработчикам компилятора Perl 6, скорее всего, следует дать максимальную свободу выбора их определения и уточнить это с течением времени. Нет уверенности в том, что декларатор native
будет существовать вечно в Rakudo, и что любые будущие разработчики компиляторов Perl 6 будут делать то же самое.
Если вам нужен псевдоним для имени собственного типа, просто используйте constant
:
constant smallish = int;
Поскольку constant
вычисляется во время компиляции, этот символ может использоваться точно так же, как и любой другой тип. В native
нет функциональности, которая недоступна для типов, доступных в Perl 6 или библиотеке NativeCall
.