diff --git a/.github/workflows/loading-groups.yml b/.github/workflows/loading-groups.yml index 170ff3b..0dbdc8c 100644 --- a/.github/workflows/loading-groups.yml +++ b/.github/workflows/loading-groups.yml @@ -11,8 +11,6 @@ jobs: fail-fast: false matrix: smalltalk: - - Pharo64-8.0 - - Pharo64-9.0 - Pharo64-10 - Pharo64-11 load-spec: diff --git a/.github/workflows/unit-tests.yml b/.github/workflows/unit-tests.yml index afc6065..7dd9683 100644 --- a/.github/workflows/unit-tests.yml +++ b/.github/workflows/unit-tests.yml @@ -10,8 +10,6 @@ jobs: fail-fast: false matrix: smalltalk: - - Pharo64-8.0 - - Pharo64-9.0 - Pharo64-10 - Pharo64-11 name: ${{ matrix.smalltalk }} diff --git a/README.md b/README.md index e8721ab..df015cf 100644 --- a/README.md +++ b/README.md @@ -4,18 +4,22 @@ Stargate is a library supporting the creation of HTTP based RESTful APIs. -[![Unit Tests](https://github.com/ba-st/Stargate/actions/workflows/unit-tests.yml/badge.svg)](https://github.com/ba-st/Stargate/actions/workflows/unit-tests.yml) +[![Pharo Unit Tests](https://github.com/ba-st/Stargate/actions/workflows/unit-tests.yml/badge.svg)](https://github.com/ba-st/Stargate/actions/workflows/unit-tests.yml) +[![GS64 - Unit Tests](https://github.com/ba-st/Stargate/actions/workflows/unit-tests-gs64.yml/badge.svg)](https://github.com/ba-st/Stargate/actions/workflows/unit-tests-gs64.yml) [![Coverage Status](https://codecov.io/github/ba-st/Stargate/coverage.svg?branch=release-candidate)](https://codecov.io/gh/ba-st/Stargate/branch/release-candidate) + [![Baseline Groups](https://github.com/ba-st/Stargate/actions/workflows/loading-groups.yml/badge.svg)](https://github.com/ba-st/Stargate/actions/workflows/loading-groups.yml) +[![GS64 Components](https://github.com/ba-st/Stargate/actions/workflows/loading-gs64-components.yml/badge.svg)](https://github.com/ba-st/Stargate/actions/workflows/loading-gs64-components.yml) [![Markdown Lint](https://github.com/ba-st/Stargate/actions/workflows/markdown-lint.yml/badge.svg)](https://github.com/ba-st/Stargate/actions/workflows/markdown-lint.yml) [![Shellcheck](https://github.com/ba-st/Stargate/actions/workflows/shellcheck.yml/badge.svg)](https://github.com/ba-st/Stargate/actions/workflows/shellcheck.yml) [![GitHub release](https://img.shields.io/github/release/ba-st/Stargate.svg)](https://github.com/ba-st/Stargate/releases/latest) -[![Pharo 8.0](https://img.shields.io/badge/Pharo-8.0-informational)](https://pharo.org) -[![Pharo 9.0](https://img.shields.io/badge/Pharo-9.0-informational)](https://pharo.org) + [![Pharo 10](https://img.shields.io/badge/Pharo-10-informational)](https://pharo.org) [![Pharo 11](https://img.shields.io/badge/Pharo-11-informational)](https://pharo.org) +[![GS64 3.7.0](https://img.shields.io/badge/GS64-3.7.0-informational)](https://gemtalksystems.com/products/gs64/) + Quick links - [**Explore the docs**](docs/README.md) diff --git a/docs/MigrationGuide.md b/docs/MigrationGuide.md index 0db5b22..976c650 100644 --- a/docs/MigrationGuide.md +++ b/docs/MigrationGuide.md @@ -1,5 +1,39 @@ # Migration Guide +## Migration from v7/8 to v9 + +- Pharo 8 and 9 support is deprecated, use Pharo 10 or 11. +- `StargateApplication class >> #applicationBaselineName` is replaced by + `#projectName`. + - For Pharo it will be concatenated to `BaselineOf` to + search for the Baseline package when initializing the version. + - For GS64 it will be used as the project name to search in the Rowan + registry. +- `StargateApplication>>#stackTraceDumper` changed the default + implementation to create a `StackTraceTextDumper` instead of the + binary version. If you want to continue using the dumper as before, + reimplement it with: + ```smalltalk + stackTraceDumper + + ^ StackTraceBinarySerializer on: [ :dumpAction | + self class fileReferenceToDumpStackTrace binaryWriteStreamDo: dumpAction ] + ``` +- `StargateApplication class >> fileReferenceToDumpStackTrace` changed + the file naming convention. Now the produced file includes: + - the command name used to start the application + - the current timestamp + - a UUID encoded in Base-36 + + The new implementation will also check that the file to use doesn't + exist before dumping information on it. +- `stackTraceDumpExtension` is introduced in `StargateApplication` so + users can now specify a different file extension for the trace dumps. +- This version adds support for GemStone/S 64 bits 3.7.0, keep + in mind that `String` and `Symbol` instances do not compare for equality + like Pharo. Be careful when accessing header names in the request or + response abstractions, for maximum compatibility strings must be used as keys. + ## Migration from v6 to v7 - Pharo 7 support is now deprecated, use Pharo 8 or 9. diff --git a/docs/reference/ApplicationInfo.md b/docs/reference/ApplicationInfo.md index febc3ed..065ecff 100644 --- a/docs/reference/ApplicationInfo.md +++ b/docs/reference/ApplicationInfo.md @@ -23,6 +23,7 @@ Dictionary new Available information providers: - `application` Reports the application name, description, and version +- `gs64` Reports information about the Gem, Shared Page Cache and Stone - `pharo` Reports information about the Pharo image and VM - `os` Reports information about the underlying operating system diff --git a/docs/reference/Baseline-groups.md b/docs/reference/Baseline-groups.md index ca696fa..e1f69c2 100644 --- a/docs/reference/Baseline-groups.md +++ b/docs/reference/Baseline-groups.md @@ -1,4 +1,6 @@ -# Baseline Groups +# Baseline Groups & GS 64 Components + +## Pharo Baseline Groups Stargate includes the following groups in its Baseline that can be used as loading targets: diff --git a/docs/reference/Metrics.md b/docs/reference/Metrics.md index f66970f..c05a824 100644 --- a/docs/reference/Metrics.md +++ b/docs/reference/Metrics.md @@ -20,7 +20,7 @@ Dictionary new To get a list of supported metric providers print the result of `MetricProvider allProviderNames`. -Available metric providers: +Available metric providers for Pharo: - `memory` gathers metrics over the allocated memory (total, old space, free old space, eden space, young space) @@ -28,6 +28,13 @@ Available metric providers: on garbage collection, invocation count and tenure count) - `running system` gathers information over the running system (uptime, process count by status and priority, external semaphore table data) + +Available metric providers for GS64: + +- `running gem` gathers information over the running gem (process count by status and priority) + +Available metric providers for Pharo and GS64 + - `http` (optional group) gathers information over the incoming HTTP requests (request count, request duration, response size by HTTP method, response code, URL and URL template). The categories used for the breakdown can be filtered diff --git a/docs/reference/Skeleton.md b/docs/reference/Skeleton.md index 7f2e00c..7b087bd 100644 --- a/docs/reference/Skeleton.md +++ b/docs/reference/Skeleton.md @@ -15,9 +15,9 @@ YourApplication class>>initialize self initializeVersion -YourApplication class>>applicationBaselineName +YourApplication class>>projectName - ^#BaselineOfYourApplication + ^#YourApplication YourApplication class>>commandName @@ -52,12 +52,13 @@ String streamContents: [ :s | YourApplication printHelpOn: s]. ### Stack trace generation By default, stack traces are written in a `logs` directory relative to -the image's working directory in a filename whose name is `app-name-YYYY-MM-DD_HH-MM-SS.MS`, -and in `Fuel` format. +the image's working directory in a filename whose name is `app-name-YYYY-MM-DD_HH-MM-SS_uuid-as-base36.dump`. - To change the stack trace location, re-implement the `logsDirectory` class method. - To change the stack trace file name, re-implement `fileReferenceToDumpStackTrace` class method +- To change the stack trace file extension, re-implement + `stackTraceDumpExtension` class method - To change the dump format, re-implement `stackTraceDumper` instance method ### Additional configuration parameters