Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update CHANGELOG + release announcement #147

Merged
merged 1 commit into from
Dec 5, 2023
Merged

Update CHANGELOG + release announcement #147

merged 1 commit into from
Dec 5, 2023

Conversation

arendjr
Copy link
Collaborator

@arendjr arendjr commented Dec 5, 2023

In addition to the CHANGELOG.md, please review the release announcement as well:


This release features full compliance with the Autometrics v1.0.0 specification as well as first-class Deno support. Also, our decorators have been updated to match the Stage 3 ECMAScript decorators proposal.

Autometrics 1.0.0

In order to match the full Autometrics specification, we implemented the following features and changes:

  • Decorators now have support for skipping individual methods when decorating a class. Just decorate the method you wish to exclude with @Autometrics({ skip: true }).
  • We added support for the service.name label. The service name is automatically detected based on the AUTOMETRICS_SERVICE_NAME or OTEL_SERVICE_NAME environment variables (in order of significance). If neither environment variable is set, Autometrics-ts attempts to determine the service name based on the package name defined in package.json.
  • We also added support for the repository.url and repository.provider labels. These labels can be used to create links from Autometrics function metrics directly to your source code. We attempt to auto-detect these labels based on your Git configuration, but you can configure them explicitly using the AUTOMETRICS_REPOSITORY_URL and AUTOMETRICS_REPOSITORY_PROVIDER environment variables.
  • When submitting metrics using OTLP, we now use dots in label names instead of underscores. For instance, function.name instead of function_name. When used with Prometheus, labels should still be exported using underscores.
  • Users should see a warning in their console if they've configured an invalid objective name.

Note that all labels such as service.name and repository.url/repository.provider are also configurable in the init() function, in addition to using environment variables.

Deno support

We already offered experimental Deno support before, but with this release we've taken things one step further: We've migrated the Autometrics-ts core library to be Deno-first! This means we use Deno for our internal development and the Deno library is a first-class citizen. Most of our core unit tests also run in Deno now.

We also publish Deno releases straight to https://deno.land/x/autometrics now. (Please note there is still a slightly awkward lib- prefix in the version specifiers, which we hope to resolve in the future.)

Improved web compatibility

Thanks to the plumbing we did for moving to a Deno-first approach (shoutout dnt and rollup!), we have also been able to improve our compatibility with web bundlers. We now generate two versions of our NPM packages, one for Node.js users and one for web users. They're both bundled within the same package, so this should be fully transparent to our users.

Modern decorators

Previous versions of Autometrics-ts only supported the TypeScript-specific legacy decorators. We still support those as well, but they've been renamed to @AutometricsLegacy. The new @Autometrics decorators are fully compliant with the ECMAScript proposal.

The updated feature set, such as the new @Autometrics({ skip: true }) option, is supported by both our modern and legacy decorators alike.

Detailed CHANGELOG

Here is a more detailed list of changes:

Changed

  • BREAKING: Labels are submitted with dots instead of underscores when
    exported through OTLP. This should not affect exports to Prometheus.
  • BREAKING: The @Autometrics decorator is now compliant with the
    Stage 3 ECMAScript decorators proposal.
    For the legacy TypeScript decorators, please use @AutometricsLegacy instead.
  • BREAKING: Autometrics 1.0: caller.function and caller.module have
    been changed to match the specification.
  • Deno has become a first-class supported platform.

Added

  • Autometrics 1.0: Added support for the service.name label.
  • Autometrics 1.0: Added support for the repository.url and
    repository.provider labels.
  • Autometrics 1.0: Added support for excluding individual methods from the
    class decorator, using @Autometrics({ skip: true }). This also works with
    the legacy decorator.
  • Autometrics 1.0: Users should see a warning in their console if they've
    configured an invalid objective name.

Fixed

  • Fixed this handling in the wrappers and decorators.
  • Fixed using the autometrics package with web bundlers such as Parcel and
    WebPack.
  • Fixed an issue where caller information sometimes wasn't submitted.

Copy link
Member

@keturiosakys keturiosakys left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎉🥹

@arendjr arendjr merged commit 3622741 into main Dec 5, 2023
1 check passed
@arendjr arendjr deleted the update-changelog branch December 5, 2023 10:48
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.

2 participants