Releases: mozilla/glean
Releases · mozilla/glean
v30.0.0
- General:
- We completely replaced how the upload mechanism works.
glean-core (the Rust part) now controls all upload and coordinates the platform side with its own internals.
All language bindings implement ping uploading around a common API and protocol.
There is no change for users of Glean, the language bindings for Android and iOS have been adopted to the new mechanism already. - Expose
RecordedEvent
andDistributionData
types to Rust consumers (#876) - Log crate version at initialize (#873)
- We completely replaced how the upload mechanism works.
- Android:
- Refactor the ping uploader to use the new upload mechanism.
- iOS:
- Refactor the ping uploader to use the new upload mechanism.
v29.1.0
- General:
- The version of glean_parser has been upgraded to v1.20.4
- BUGFIX:
yamllint
errors are now reported using the correct file name.
- BUGFIX:
- The minimum and maximum values of a timing distribution can now be controlled by the
time_unit
parameter. See bug 1630997 for more details.
- The version of glean_parser has been upgraded to v1.20.4
v29.0.0
- General:
- The version of glean_parser has been upgraded to v1.20.2 (#827):
- Breaking change: glinter errors found during code generation will now return an error code.
glean_parser
now produces a linter warning whenuser
lifetime metrics are set to expire. See bug 1604854 for additional context.
- The version of glean_parser has been upgraded to v1.20.2 (#827):
- Android
- The
PingType.submit()
can now be called without anull
by Java consumers (#853).
- The
- Python:
- BUGFIX: Fixed a race condition in the
atexit
handler, that would have resulted in the message "No database found" (#854). - The Glean FFI header is now parsed at build time rather than runtime. Relevant for packaging in
PyInstaller
, the wheel no longer includesglean.h
and adds_glean_ffi.py
(#852). - The minimum versions of many secondary dependencies have been lowered to make the Glean SDK compatible with more environments.
- Dependencies that depend on the version of Python being used are now specified using the Declaring platform specific dependencies syntax in setuptools. This means that more recent versions of dependencies are likely to be installed on Python 3.6 and later, and unnecessary backport libraries won't be installed on more recent Python versions.
- BUGFIX: Fixed a race condition in the
- iOS:
- Glean for iOS is now being built with Xcode 11.4.1 (#856)
v28.0.0
- General:
- The baseline ping is now sent when the application goes to foreground, in addition to background and dirty-startup.
- Python:
- BUGFIX: The ping uploader will no longer display a trace back when the upload fails due to a failed DNS lookup, network outage, or related issues that prevent communication with the telemetry endpoint.
- The dependency on
inflection
has been removed. - The Python bindings now use
subprocess
rather thanmultiprocessing
to perform ping uploading in a separate process. This should be more compatible on all of the platforms Glean supports.
v27.1.0
- General:
- BUGFIX: baseline pings sent at startup with the
dirty_startup
reason will now include application lifetime metrics (#810)
- BUGFIX: baseline pings sent at startup with the
- iOS:
- Breaking change: Change Glean iOS to use Application Support directory #815. No migration code is included. This will reset collected data if integrated without migration. Please contact the Glean SDK team if this affects you.
- Python
- BUGFIX: Fixed a race condition between uploading pings and deleting the temporary directory on shutdown of the process.
v27.0.0
- General:
- Glean will now detect when the upload enabled flag changes outside of the application, for example due to a change in a config file. This means that if upload is disabled while the application wasn't running (e.g. between the runs of a Python command using the Glean SDK), the database is correctly cleared and a deletion request ping is sent. See #791.
- The
events
ping now includes a reason code:startup
,background
ormax_capacity
.
- iOS:
- BUGFIX: A bug where the metrics ping is sent immediately at startup on the last day of the month has been fixed.
- Glean for iOS is now being built with Xcode 11.4.0
- The
measure
convenience function on timing distributions and time spans will now cancel the timing if the measured function throws, then rethrow the exception (#808) - Broken doc generation has been fixed (#805).
- Kotlin
- The
measure
convenience function on timing distributions and time spans will now cancel the timing if the measured function throws, then rethrow the exception (#808)
- The
- Python:
- Glean will now wait at application exit for up to one second to let its worker thread complete.
- Ping uploading now happens in a separate child process by default. This can be disabled with the
allow_multiprocessing
configuration option.
v26.0.0
- General:
- The version of
glean_parser
has been updated to 1.19.0:- Breaking change: The regular expression used to validate labels is
stricter and more correct. - Add more information about pings to markdown documentation:
- State whether the ping includes client id;
- Add list of data review links;
- Add list of related bugs links.
glean_parser
now makes it easier to write external translation functions for
different language targets.- BUGFIX: glean_parser now works on 32-bit Windows.
- Breaking change: The regular expression used to validate labels is
- The version of
- Android:
gradlew clean
will no longer remove the Miniconda installation in
~/.gradle/glean
. Thereforeclean
can be used without reinstalling
Miniconda afterward every time.
- Python:
- Breaking Change: The
glean.util
andglean.hardware
modules, which
were unintentionally public, have been made private. - Most Glean work and I/O is now done on its own worker thread. This brings the parallelism Python in line with the other platforms.
- The timing distribution, memory distribution, string list, labeled boolean and labeled string metric types are now supported in Python (#762, #763, #765, #766)
- Breaking Change: The
v25.1.0
v25.0.0
- General:
ping_type
is not included in theping_info
any more (#653), the pipeline takes the value from the submission URL.- The version of
glean_parser
has been upgraded to 1.18.2:- Breaking Change (Java API) Have the metrics names in Java match the names in Kotlin.
See Bug 1588060. - The reasons a ping are sent are now included in the generated markdown documentation.
- Breaking Change (Java API) Have the metrics names in Java match the names in Kotlin.
- Android:
- The
Glean.initialize
method runs mostly off the main thread (#672). - Labels in labeled metrics now have a correct, and slightly stricter, regular expression.
See label format for more information.
- The
- iOS:
- The baseline ping will now include
reason
codes that indicate why it was
submitted. If an unclean shutdown is detected (e.g. due to force-close), this
ping will be sent at startup withreason: dirty_startup
. - Per Bug 1614785, the
clearing of application lifetime metrics now occurs after the metrics ping is
sent in order to preserve values meant to be included in the startup metrics
ping. initialize()
now performs most of its work in a background thread.
- The baseline ping will now include
- Python:
- When the pre-init task queue overruns, this is now recorded in the metric
glean.error.preinit_tasks_overflow
. - glinter warnings are printed to
stderr
when loadingmetrics.yaml
and
pings.yaml
files.
- When the pre-init task queue overruns, this is now recorded in the metric
v24.2.0
- General:
- Add
locale
toclient_info
section. - Deprecation Warning Since
locale
is now in theclient_info
section, the one
in the baseline ping (glean.baseline.locale
)
is redundant and will be removed by the end of the quarter. - Drop the Glean handle and move state into glean-core (#664)
- If an experiment includes no
extra
fields, it will no longer include{"extra": null}
in the JSON payload. - Support for ping
reason
codes was added. - The metrics ping will now include
reason
codes that indicate why it was
submitted. - The version of
glean_parser
has been upgraded to 1.17.3
- Add
- Android:
- Collections performed before initialization (preinit tasks) are now dispatched off
the main thread during initialization. - The baseline ping will now include
reason
codes that indicate why it was
submitted. If an unclean shutdown is detected (e.g. due to force-close), this
ping will be sent at startup withreason: dirty_startup
.
- Collections performed before initialization (preinit tasks) are now dispatched off
- iOS:
- Collections performed before initialization (preinit tasks) are now dispatched off
the main thread and not awaited during initialization. - Added recording of
glean.error.preinit_tasks_overflow
to report when
the preinit task queue overruns, leading to data loss. See bug
1609734
- Collections performed before initialization (preinit tasks) are now dispatched off