Menu

Changelog and Versioning

Relevant source files

This document describes the version management system used in OwnLang, including how versions are defined, how the changelog is maintained, and the evolution of the language across releases. This covers the technical implementation of version tracking and the documentation of changes over time.

For information about the documentation generation system itself, see Documentation Generation. For information about the build and release process, see Distribution and Deployment.

Version Management System

OwnLang uses semantic versioning (MAJOR.MINOR.PATCH) with build date information. The version system is centrally managed through a dedicated version class that provides constants for all version components.

Version Definition Structure

The version system is implemented in ownlang-core/src/main/java/com/annimon/ownlang/Version.java1-11 with the following structure:

  • VERSION_MAJOR: Major version number indicating breaking changes
  • VERSION_MINOR: Minor version number for new features
  • VERSION_PATCH: Patch version for bug fixes
  • VERSION: Combined version string including build date
  • Gen.BUILD_DATE: Automatically generated build timestamp

Sources: ownlang-core/src/main/java/com/annimon/ownlang/Version.java1-11

Version Access and Integration

The version information is exposed to OwnLang programs through the std module's OwnLang constant, which provides metadata about the language version and platform.

Sources: ownlang-core/src/main/java/com/annimon/ownlang/Version.java1-11 docs/docs/en/changelog.md80

Changelog Structure and Maintenance

The changelog system maintains parallel English and Russian documentation files that track all changes across releases. The changelog follows a structured format for consistent documentation of changes.

Changelog File Organization

Each changelog entry is organized by version number with the following sections:

SectionPurposeExample
Breaking ChangesAPI changes requiring code updatesJava 17 requirement, syntax changes
ChangesNew features and improvementsPackage manager, constant support
FixesBug fixes and correctionsCommand-line argument handling
ModulesModule-specific updatesNew functions, module additions

Sources: docs/docs/en/changelog.md1-114 docs/docs/ru/changelog.md1-116

Change Documentation Process

Sources: docs/docs/en/changelog.md1-114 docs/docs/ru/changelog.md1-116

Release History and Evolution

The changelog tracks OwnLang's evolution from version 1.2.0 to the current 2.1.0, documenting the progressive addition of features and modules.

Major Version Milestones

Sources: docs/docs/en/changelog.md6-114

Feature Evolution Tracking

The changelog demonstrates several key evolutionary patterns:

Module System Growth:

  • 1.2.0: Core modules (canvasfx, date, yml, aimp)
  • 1.3.0: Utility modules (socket, base64, java, forms, jdbc)
  • 1.4.0: Processing modules (downloader, regex)
  • 1.5.0: Compression modules (zip, gzip, okhttp)
  • 2.0.0: Web server module (server)

Language Feature Development:

  • 1.4.0: String internal fields and extensions
  • 1.5.0: Class support and null coalesce operator
  • 2.0.0: Constants system and strict linter requirements
  • 2.1.0: Package management system

Sources: docs/docs/en/changelog.md50-114

Documentation Versioning Integration

The changelog integrates with the broader documentation system through VuePress generation and maintains consistency across language versions.

Documentation Build Integration

The documentation system maintains version consistency between:

  • Source code version constants in Version.java
  • Changelog documentation files
  • Generated documentation site
  • Runtime version access through the std module

Sources: ownlang-core/src/main/java/com/annimon/ownlang/Version.java1-11 docs/docs/en/changelog.md40

Multilingual Changelog Maintenance

The system maintains parallel changelog files for internationalization:

LanguageFile PathMaintenance Status
Englishdocs/docs/en/changelog.mdPrimary documentation
Russiandocs/docs/ru/changelog.mdSynchronized translation

Both files follow identical structural organization with version-specific sections for breaking changes, features, fixes, and module updates.

Sources: docs/docs/en/changelog.md1-114 docs/docs/ru/changelog.md1-116