PackageTrack
Sign in Get early access

punycoder

Punycoder is a well tested Dart implementation of the RFC 3492 Punycode specification

0.3.0 45K downloads/mo #1537 most downloaded on pub.dev dropbear-software/punycoder

What this package is like to depend on

Last release 5 months ago

26 Feb 2026

Too new to tell

only 2 release windows

Nearly every release is documented

notes for 5 of 5 stable releases

Nothing withdrawn

no release was ever pulled

1 years old

5 releases · first in 2025

1 release in the last 12 months

see the full history below

Release timeline

5 releases · May 2025 to Feb 2026
2026
Release Pre-release

Releases

latest 5
  1. 0.3.0 26 Feb 2026
    Release notes

    0.3.0

    This release is a complete, ground-up rewrite of the package. It provides a fully compliant, strictly validated, and idiomatic Dart implementation of the Punycode standard.

    🚨 Breaking Changes

    • Separation of IDNA and Raw Punycode: The default PunycodeCodec no longer attempts to automatically parse and encode/decode full domains or email addresses. It now acts purely on raw strings.
    • Removed PunycodeCodec.simple(): Because the default codec now handles raw strings exclusively, the .simple() constructor has been removed. A new global punycode instance is provided for convenience.
    • Extracted Domain & Email Handling: Domain and email conversions are now handled by dedicated top-level functions (domainToAscii, domainToUnicode, emailToAscii, and emailToUnicode).
    • Strict (but Configurable) IDNA Validation: IDNA processing now strictly enforces formatting rules by default. Inputs with labels exceeding 63 characters, domains exceeding 253 characters, or invalid hyphen placements will actively throw a FormatException. You can bypass this by passing validate: false.

    ✨ New Features & Improvements

    • Full RFC 3492 Compliance: Rigorous implementation of the complete Punycode specification.
    • Mixed-Case Support (RFC 3429 Appendix A): Added support for Appendix A mixed-case annotations, properly preserving casing during encoding and decoding.
    • Official Errata Fixes: Implemented technical corrections for RFC 3492 Errata IDs 265 and 3026.
    • IDNA2003 Separator Support: domainToAscii now recognizes and properly splits labels using standard IDNA2003 separators (., \u3002, \uFF0E, \uFF61).
    • Platform Parity: Added a comprehensive suite of unit and integration tests to guarantee identical behavior across both Dart VM and Web platforms.
    Open source →
    Release notes

    This release is a complete, ground-up rewrite of the package. It provides a fully compliant, strictly validated, and idiomatic Dart implementation of the Punycode standard.

    🚨 Breaking Changes

    • Separation of IDNA and Raw Punycode: The default PunycodeCodec no longer attempts to automatically parse and encode/decode full domains or email addresses. It now acts purely on raw strings.
    • Removed PunycodeCodec.simple(): Because the default codec now handles raw strings exclusively, the .simple() constructor has been removed. A new global punycode instance is provided for convenience.
    • Extracted Domain & Email Handling: Domain and email conversions are now handled by dedicated top-level functions (domainToAscii, domainToUnicode, emailToAscii, and emailToUnicode).
    • Strict (but Configurable) IDNA Validation: IDNA processing now strictly enforces formatting rules by default. Inputs with labels exceeding 63 characters, domains exceeding 253 characters, or invalid hyphen placements will actively throw a FormatException. You can bypass this by passing validate: false.

    ✨ New Features & Improvements

    • Full RFC 3492 Compliance: Rigorous implementation of the complete Punycode specification.
    • Mixed-Case Support (RFC 3429 Appendix A): Added support for Appendix A mixed-case annotations, properly preserving casing during encoding and decoding.
    • Official Errata Fixes: Implemented technical corrections for RFC 3492 Errata IDs 265 and 3026.
    • IDNA2003 Separator Support: domainToAscii now recognizes and properly splits labels using standard IDNA2003 separators (., \u3002, \uFF0E, \uFF61).
    • Platform Parity: Added a comprehensive suite of unit and integration tests to guarantee identical behavior across both Dart VM and Web platforms.
    Open source →
  2. 0.2.2 02 May 2025
    Release notes

    Full Changelog: v0.2.1...v0.2.2

    Open source →
    Release notes
    • Fix code formatting and ensure README is up to date.
    Open source →
  3. 0.2.1 02 May 2025
    Release notes

    What's Changed

    Full Changelog: v0.1.0...v0.2.1

    Open source →
    Release notes
    • Fix code formatting and ensure README is up to date.
    Open source →
  4. 0.2.0 02 May 2025
    Release notes
    • Refactor the package to strictly follow the Converter<S, T> interface established in dart:convert and clean up the API as a result.
    Open source →
  5. 0.1.0 02 May 2025
    Release notes

    What's Changed

    New Contributors

    Full Changelog: https://github.com/dropbear-software/punycoder/commits/v0.1.0

    Open source →
    Release notes
    • Initial version.
    Open source →

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive