perl parsing memory-leaks marpa

perl - Marpa:: R2 pierde memoria



parsing memory-leaks (1)

La fuga se corrigió en Marpa-R2 2.065_006 en CPAN. Gracias por señalar esto y gracias a amon por el ejemplo mínimo, que me ahorró tiempo y facilitó las cosas.

El problema resultó ser el código de Perl. Dos estructuras tenían referencias entre sí: una referencia circular. Probar la versión fija con el ejemplo de amon produce un uso de memoria absolutamente plano a lo largo del tiempo.

Conseguiré esta solución en una versión indexada (que no sea de desarrollador) en CPAN lo antes posible.

Estoy utilizando la última versión de marpa :: r2 (Marpa-R2-2.065_002) y parece que se come toda la memoria muy rápido. Escribí el guión abajo para probarlo.

use strict; use warnings FATAL => ''all''; use Marpa::R2; use Data::Dumper; my $grammar = Marpa::R2::Scanless::G->new({ action_object => __PACKAGE__, source => /(<<''END_OF_SOURCE''), :default ::= action => ::array :start ::= path path ::= step action => _do_step step ~ [a-z]+ END_OF_SOURCE }); sub _do_step{ return {step => $_[1]}}; sub new {} #The Marpa::R2 needs it sub compile{ my ($query) = @_; return undef unless $query; my $reader = Marpa::R2::Scanless::R->new({ grammar => $grammar, trace_terminals => 0, }); $reader->read(/$query); print Dumper $reader->value; } compile($_) foreach (''aaaa''..''zzzz'');

¿Qué puedo hacer para evitar fugas de memoria?

Editar: ahora se informa como un error en rt.cpan .

Editar: ahora está arreglado en el lanzamiento Marpa-R2 2.066000. Gracias