Port Variable::Magic for CPAN compatibility
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Idoneità per principianti
- 30/100
Direzione di ricerca
Inizia definendo l’API Variable::Magic supportata e analizzando gli hook di runtime disponibili sui backend JVM e interpreter. Usa t/00-compile.t, t/lvalue.t, t/lvalue_in_role.t e t/lvalue_in_role_with_xs.t di MooX::LvalueAttribute come copertura downstream, quindi aggiungi unit test mirati per l’implementazione basata su Java. Il lavoro è completo quando i moduli supportati possono essere caricati senza XS nativo e le operazioni non supportate sono documentate.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Summary
Port Variable::Magic to PerlOnJava or provide a compatible Java-backed implementation so CPAN modules that depend on Perl variable magic can load and run without native XS.
Variable::Magic exposes Perl's low-level variable-magic API, including callbacks for get, set, clear, free, copy, local, and hash fetch/store/exists/delete operations. The current distribution is XS-only and requires a C compiler; PerlOnJava reports:
Can't load loadable object for module Variable::Magic: no Java XS implementation available
CPAN evidence
In CPAN run 20260918-141920-96054, MooX::LvalueAttribute v0.16 passes completely under system Perl:
Files=6, Tests=33
Result: PASS
Under PerlOnJava, 4/6 test programs fail during loading because Variable::Magic cannot load. The affected downstream tests are:
t/00-compile.tt/lvalue.tt/lvalue_in_role.tt/lvalue_in_role_with_xs.t
This prevents the lvalue-attribute implementation from exercising its normal behavior; the failure is in the native dependency rather than in MooX::LvalueAttribute itself.
Ecosystem impact
The current MetaCPAN release index contains 38 unique CPAN distributions with a runtime requires dependency on Variable::Magic, deduplicated across 634 matching release records. Two dependant distributions have releases within the preceding 12 months: Dios and MooseX-Params.
Representative runtime dependants include DBIx-Class, KiokuDB, MRO-Magic, MooX-LvalueAttribute, MooseX-Lexical-Types, MooseX-LvalueAttribute, Type-Alias, warnings-lock, and Variable-Temp.
Source query: https://fastapi.metacpan.org/v1/release/_search?q=dependency.module%3A%22Variable%3A%3AMagic%22&size=1000&from=0
Expected behavior
A supported PerlOnJava implementation should allow modules using the documented Variable::Magic API to load and provide compatible variable-magic behavior, or clearly expose a supported substitute that downstream CPAN modules can use without native code.
Suggested scope
- Define the supported Variable::Magic API and identify which magic operations can be represented by PerlOnJava runtime hooks.
- Implement the highest-value operations first, including wizard creation, casting, retrieving data, and dispelling magic.
- Preserve callback timing and lvalue/hash behavior where the Perl runtime exposes an equivalent operation.
- Add focused unit tests for the Java-backed implementation on both JVM and interpreter backends.
- Use
MooX::LvalueAttributeas downstream acceptance coverage, followed by other dependants such asMRO::Magicandwarnings-lock. - Document unsupported operations explicitly if complete parity cannot be achieved in the first port.
Notes
This is a porting/enhancement request for a native CPAN dependency, not a defect in MooX::LvalueAttribute. The reverse-dependency lookup in the local CPAN-priority tool previously failed with MetaCPAN HTTP 599; the count above was independently obtained from the current MetaCPAN release index and filtered to unique runtime dependants.
- Lingua principale
- Perl
- Stelle
- 64
- Fork
- 6
- Merge medio
- 4h 29m
- PR unite (30g)
- 185
Preparare l'ambiente
- Include un Dockerfile o un file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di fglock/PerlOnJava
-
area:cpan-port area:database bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
fglock/PerlOnJava#1605 ·
I maintainer di solito rispondono entro 1 giorno
-
area:cpan-port area:database bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 85/100
fglock/PerlOnJava#1604 ·
I maintainer di solito rispondono entro 1 giorno
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
fglock/PerlOnJava#1579 ·
I maintainer di solito rispondono entro 1 giorno
-
area:cpan-port area:unicode bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
fglock/PerlOnJava#1341 ·
I maintainer di solito rispondono entro 1 giorno
-
area:runtime bug
Difficoltà 4/5 3-5 giorni Idoneità per principianti 68/100
fglock/PerlOnJava#1610 ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di fglock/PerlOnJava
Issue simili
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
ESCOMP/CAM#1701 · 1 commento ·
I maintainer di solito rispondono entro 3 giorni
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 86/100
-
language/en needs-triage
Difficoltà 2/5 1-3 ore Idoneità per principianti 85/100
kubernetes/website#57846 · 2 commenti ·
I maintainer di solito rispondono entro 2 giorni
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
objectionary/eolang.sty#184 ·