Depois de um longo tempo imaginando quando esse dia chegaria, hoje o Paweł Murias criou um fork no github do interpretador perl para que possamos começar a trabalhar na integração do SMOP com o perl5.
Alguns de vocês já devem ter me ouvido falar que a principal razão para o SMOP existir hoje é a possibilidade de integração com o interpretador do perl5, de forma que possamos usar o Perl 6 com todas as bibliotecas da CPAN, incluindo as que dependem de XS, como o fantástico Gtk2-Perl.
De fato, eu venho bloqueando o pmurias em algumas coisas como trocar o referencecounting por um trace gc no SMOP exatamente porque isso iria fazer o SMOP incompatível com o perl5, e eu realmente quero que eles cooperem.
Esta integração deve ocorrer no nivel mais profundos dos perlguts, onde o interpretador do perl5 vai fazer o papel do interpretador do SMOP e todo SV* será também um SMOP__Object*.
Paweł adicionou o smop/base.h para o repositório do p5 e eu comecei adicionando o membro SMOP__ResponderInterface* para alguns valores do p5 (por enquanto o _SV_HEAD, que define os primeiros membros de todos os valores SV< e o PerlInterpreter). Isto é o primeiro passo que irá permitir que o SMOP use objetos do perl5 sem a necessidade de valores-proxy.
Depois de falar com o nothingmuch no #p5p, decidi anotar aqui o primeiro conjunto de objetivos para a integração SMOPP5:
- Fazer todo valor do perl um SMOP__Object*
- Implementar Responder Interfaces para cada um desses valores
- Implementar o SMOP interpreter and continuation class APIs no interpretador do perl5 (usando Coro::State por hora)
- Ter objetos SMOP visíveis no perl5 através de objetos-proxy, como acontece hoje
Este conjunto nos dá a integração SMOP->P5, depois disso precisaremos da integração P5->SMOP, que deverá envolver mexer em todas as macros do core do p5, o que é *muita* coisa, então não vou nem incluir nos nossos objetivos para fins de sanidade!
Parabéns!
o re-smop já foi mergeado com o smop?