Skip to content

BUILDSYS-636: esnacc 7.0.12 — deprecatedbaseline.txt and unified API baseline dates - #144

Merged
JanFellner merged 3 commits into
mainfrom
feature/BUILDSYS-636-esnacc-api-baseline-date
Aug 7, 2026
Merged

BUILDSYS-636: esnacc 7.0.12 — deprecatedbaseline.txt and unified API baseline dates#144
JanFellner merged 3 commits into
mainfrom
feature/BUILDSYS-636-esnacc-api-baseline-date

Conversation

@JanFellner

Copy link
Copy Markdown
Contributor

Summary

Release esnacc 7.0.12 with optional deprecatedbaseline.txt, unified API baseline handling aligned with -nodeprecated, and consistent MODULE_* version metadata across C++/TypeScript/Kotlin/Swift/Java/JSON backends.

Jira: BUILDSYS-636

Version

Previous (main) 7.0.11 (RELDATE 06.08.2026)
This MR 7.0.12 (RELDATE 07.08.2026)

Tag 7.0/7.0.12 on main after merge.

Motivation

  • Replace opaque interfaceversion.txt with an optional API baseline date (deprecatedbaseline.txt) using the same date formats as @deprecated / @added.
  • Align -nodeprecated (bare or dated) with that baseline for stub filtering and published version labels.
  • Expose baseline and @added activity separately in generated stubs for interface handshake work (UCAAS-1480).

Behaviour changes

deprecatedbaseline.txt

  • Optional file beside ASN.1 modules (replaces interfaceversion.txt).
  • Date → sets API baseline cutoff and MODULE_MAJOR_VERSION (YYYYMMDD).
  • Legacy integer → major label only; no automatic deprecated filter.
  • Missing / comment-only → major 0, full interface for deprecated filtering.

Precedence: -nodeprecated:date → bare -nodeprecated (newest @deprecated in scope) → deprecatedbaseline.txt → none.

Generated version metadata (all versioning backends)

Shared fields via module_version_emit.c:

Field Meaning
MODULE_LASTCHANGE Newest @added (ISO)
MODULE_BASELINE Deprecation baseline (ISO)
MODULE_MAJOR_VERSION Baseline YYYYMMDD / legacy int / 0
MODULE_MINOR_VERSION Semver placeholder (0)
MODULE_PATCH_VERSION Newest @added (YYYYMMDD)
MODULE_VERSION "major.0.patch" semver string
  • C++: fixes #define syntax (no = in macro body); version defines emitted inside namespace block.
  • Kotlin: fixes semver layout (major.0.patch, not major.unix.0).
  • Swift: ISO strings (not Date) for baseline/lastChange.

Filter mode

-filter -nodeprecated re-parses ASN.1 after baseline resolution so deprecated symbols are actually removed.

Tests

  • New compiler/tests/ target: CLI integration tests (10) + interface baseline unit tests (8).
  • All 18 tests pass locally (CMake Release).

Consumer follow-up (not in this repo)

  1. global: MR feature/BUILDSYS-636-esnacc-api-baseline-date pins libs/snacclib7dddf5f6.
  2. asn1_procall / asn1_ucweb: add comment-only deprecatedbaseline.txt, remove interfaceversion.txt.
  3. After merge: tag 7.0/7.0.12, rebuild global/buildtools/esnacc7.exe, bump global pin on main.

Test plan

  • CMake Release build (compiler, compiler-cli-tests, interface-baseline-tests)
  • All 18 compiler/baseline tests pass
  • CI green on this PR
  • After merge: tag release, refresh global/buildtools/esnacc7.exe

…7.0.12)

Replace interfaceversion.txt with optional deprecatedbaseline.txt, unify baseline with -nodeprecated (date or auto max @deprecated), rebuild -filter output after baseline resolution, emit unified MODULE_* version metadata with shared comments across C++/TS/Kotlin/Swift/Java/JSON backends, fix C++ define syntax and Kotlin semver layout, and add CLI/baseline unit tests.

Made-with: Cursor
interface_baseline.c used MSVC-only strcpy_s/fopen_s without asn-config.h macros, breaking Ubuntu CI. Document platform helper usage in AGENTS.md and a new always-applied Cursor rule.

Made-with: Cursor
On Linux fopen_s maps to myfopen in platform-functions.c. The baseline unit test executable compiled interface_baseline.c without linking c-lib, causing undefined reference errors in Ubuntu CI.

Made-with: Cursor
@JanFellner
JanFellner merged commit 3639723 into main Aug 7, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant