Skip to content

YAML::Syck bundled shim does not export Dump, breaking App::BitBucketCli #1306

Description

@fglock

YAML::Syck bundled shim does not export Dump, breaking App::BitBucketCli

Summary

The CPAN distribution App-BitBucketCli 0.009 regressed in the 2026-09-08 CPAN random tester run because the bundled PerlOnJava implementation of YAML::Syck does not provide the public import and Dump API expected by CPAN clients.

This is a PerlOnJava compatibility bug, not an upstream or environment failure.

Evidence

  • Distribution: App-BitBucketCli 0.009
  • CPAN run: 20260908-125510-82561
  • Regression row: App::BitBucketCli, 47/48 passing
  • Previous passing date: 2026-08-27
  • Previous passing commit recorded by the tester: 4ebea75
  • System Perl: complete upstream suite passes, 8 test programs and 48 subtests
  • PerlOnJava JVM backend: reproduces the failure
  • PerlOnJava interpreter backend: reproduces the failure

The failing test is t/00-load.t. Tests 1 through 14 pass, but Test::Warnings fails the final done_testing assertion because module loading emits:

Attempt to call undefined import method with arguments ("Dump") via package "YAML::Syck"

Root cause

App::BitBucketCli::Core contains:

use YAML::Syck qw/Dump/;

The bundled implementation at src/main/perl/lib/YAML/Syck.pm currently defines low-level routines such as LoadYAML, DumpYAML, LoadJSON, and DumpJSON, but it does not define:

  • a public Dump function
  • a public import method that exports Dump
  • the corresponding normal YAML::Syck compatibility surface

As a result, PerlOnJava loads App::BitBucketCli::Core but emits an unexpected warning during the requested import. Test::Warnings correctly turns that warning into the test failure.

The failure is reproducible independently of App::BitBucketCli with:

use YAML::Syck;
YAML::Syck->import("Dump");

Under PerlOnJava, the import call reports the same undefined-import warning. The system Perl YAML::Syck implementation accepts this API.

Expected behavior

YAML::Syck should support the standard exported API used by CPAN distributions, including:

use YAML::Syck qw/Dump/;
my $yaml = Dump({ key => "value" });

The compatibility implementation may delegate serialization to the existing YAML::PP-backed implementation, provided the public behavior and exports match the expected YAML::Syck API.

Suggested acceptance criteria

  • App-BitBucketCli 0.009 t/00-load.t passes under both the JVM and interpreter backends.
  • YAML::Syck import and Dump behavior has focused project-owned regression coverage.
  • Existing YAML::Syck and YAML-related tests remain passing.
  • No unexpected warning is emitted for a valid YAML::Syck import.

Classification

Confirmed internal PerlOnJava bug. No native dependency, external service, display, timeout, or system-Perl setup issue is involved.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions