v0.4.0 - 2024-05-09
Bug Fixes
<details >
<summary>
(ci) Fix broken nighly jobs (<a href="https://github.com/metatypedev/metatype/pull/659">#659</a>)
</summary>
Fixes the broken nightly builds. Look at solved results
here.
Motivation and context
Nightly builds were broken due to oversight during the #571 fixes.
Migration notes
No changes required
Checklist
- [ ] The change come with new or modified tests
- [ ] Hard-to-understand functions have explanatory comments
- [ ] End-user documentation is updated to reflect the change
</details>
<details >
<summary>
(gh-tests) Fix local npm registry config (<a href="https://github.com/metatypedev/metatype/pull/692">#692</a>)
</summary>
<!--
Pull requests are squash merged using:
- their title as the commit message
- their description as the commit body
Having a good title and description is important for the users to get
readable changelog.
-->
<!-- 1. Explain below WHAT the change is -->
Fix the NPM registry config in the Github tests.
<!-- 2. Explain below WHY the change cannot be made simpler -->
<!-- 3. Explain below WHY the was made or link an issue number -->
<!-- 4. Explain HOW users should update their code or remove that
section -->
Migration notes
N/A
<!-- 5. Readiness checklist
- [ ] The change come with new or modified tests
- [ ] Hard-to-understand functions have explanatory comments
- [ ] End-user documentation is updated to reflect the change
-->
</details>
<details >
<summary>
Set max log level based on verbose flag (<a href="https://github.com/metatypedev/metatype/pull/664">#664</a>)
</summary>
Set max log level based on verbose flag
Motivation and context
MET-445
Migration notes
n/a
Checklist
- [ ] The change come with new or modified tests
- [ ] Hard-to-understand functions have explanatory comments
- [ ] End-user documentation is updated to reflect the change
</details>
<details >
<summary>
Fix secret passing (<a href="https://github.com/metatypedev/metatype/pull/675">#675</a>)
</summary>
Fix secret passing in examples and documentation.
Motivation and context
Followup to #666.
Migration notes
N/A
Checklist
- [x] The change come with new or modified tests
- [ ] Hard-to-understand functions have explanatory comments
- [x] End-user documentation is updated to reflect the change
</details>
<details >
<summary>
Website and headline (<a href="https://github.com/metatypedev/metatype/pull/691">#691</a>)
</summary>
<!--
Pull requests are squash merged using:
- their title as the commit message
- their description as the commit body
Having a good title and description is important for the users to get
readable changelog and understand when they need to update his code and
how.
-->
<!-- Explain WHAT the change is -->
Motivation and context
Fix the CSS issue introduced by docusaurus 3.2.0
(https://github.com/facebook/docusaurus/issues/10005). 3.2.1 should fix
it but the affected version maybe loaded by dependencies, so we will
have to wait a bit more.
<!-- Explain WHY the was made or link an issue number -->
<!-- Explain HOW users should update their code when required -->
Checklist
- [ ] The change come with new or modified tests
- [x] Hard-to-understand functions have explanatory comments
- [ ] End-user documentation is updated to reflect the change
</details>
<details >
<summary>
Do not override log level when no verbosity flag is present (<a href="https://github.com/metatypedev/metatype/pull/694">#694</a>)
</summary>
<!--
Pull requests are squash merged using:
- their title as the commit message
- their description as the commit body
Having a good title and description is important for the users to get
readable changelog.
-->
<!-- 1. Explain below WHAT the change is -->
Remove log level override by the verbosity flag when no flag is present.
It will default to the configured env_logger default level (or env
variable).
<!-- 2. Explain below WHY the change cannot be made simpler -->
...
<!-- 3. Explain below WHY the was made or link an issue number -->
The default log level became "error" after #664, and RUST_LOG
environment variable where ignored.
<!-- 4. Explain HOW users should update their code or remove that
section -->
Migration notes
N/A
<!-- 5. Readiness checklist
- [ ] The change come with new or modified tests
- [ ] Hard-to-understand functions have explanatory comments
- [ ] End-user documentation is updated to reflect the change
-->
</details>
Documentation
<details >
<summary>
Start rebranding (<a href="https://github.com/metatypedev/metatype/pull/641">#641</a>)
</summary>
<!--
Pull requests are squash merged using:
- their title as the commit message
- their description as the commit body
Having a good title and description is important for the users to get
readable changelog and understand when they need to update his code and
how.
-->
<!-- Explain WHAT the change is -->
Motivation and context
Changing the intro.
<!-- Explain WHY the was made or link an issue number -->
Migration notes
None.
<!-- Explain HOW users should update their code when required -->
Checklist
- [ ] The change come with new or modified tests
- [ ] Hard-to-understand functions have explanatory comments
- [ ] End-user documentation is updated to reflect the change
</details>
<details >
<summary>
Add `reference/programmatic-deployment/` (<a href="https://github.com/metatypedev/metatype/pull/686">#686</a>)
</summary>
Motivation and context
Add missing docs for tgDeploy
, tgRemove
Migration notes
None
Checklist
- [ ] The change come with new or modified tests
- [ ] Hard-to-understand functions have explanatory comments
- [ ] End-user documentation is updated to reflect the change
</details>
<details >
<summary>
Add examples for each command (<a href="https://github.com/metatypedev/metatype/pull/684">#684</a>)
</summary>
Motivation and context
Getting started with meta
cli should be easy
Migration notes
None
Checklist
- [ ] The change come with new or modified tests
- [ ] Hard-to-understand functions have explanatory comments
- [ ] End-user documentation is updated to reflect the change
</details>
<details >
<summary>
Improve `/tutorials/quick-start` section. (<a href="https://github.com/metatypedev/metatype/pull/681">#681</a>)
</summary>
- [x] Improve Layout
- [x] Include a simple project.
- [x] Add the result/outputs to running CLI commands.
- [x] Remove Metatype cloud registration form.
- [x] Separate the CLI commands to separate code blocks
- [x] Add links to references and concepts.
- [x] Add playground.
Motivation and context
Docs
Meta-task
Migration notes
No Migration Needed
Checklist
- [x] Test the commands and the examples.
- [ ] The change come with new or modified tests
</details>
<details >
<summary>
Improve `/docs/tutorials/metatype-basics` (<a href="https://github.com/metatypedev/metatype/pull/688">#688</a>)
</summary>
Improve /docs/tutorials/metatype-basics
Motivation and context
Docs
Meta-task
Migration notes
No Migrations Needed
Checklist
- [ ] The change come with new or modified tests
</details>
<details >
<summary>
Improve `/reference/runtimes/` (<a href="https://github.com/metatypedev/metatype/pull/676">#676</a>)
</summary>
Motivation and context
Better documentation
Migration notes
N/A
Checklist
- [ ] The change come with new or modified tests
- [ ] Hard-to-understand functions have explanatory comments
- [x] End-user documentation is updated to reflect the change
</details>
<details >
<summary>
Improve `/guides/external-functions` (<a href="https://github.com/metatypedev/metatype/pull/677">#677</a>)
</summary>
- Improvements to the
/guides/external-functions
page. - Adds a configuration file for git-town
Motivation and context
N/A
Migration notes
N/A
Checklist
- [ ] The change come with new or modified tests
- [ ] Hard-to-understand functions have explanatory comments
- [ ] End-user documentation is updated to reflect the change
</details>
<details >
<summary>
Improve `docs/reference/types` (<a href="https://github.com/metatypedev/metatype/pull/685">#685</a>)
</summary>
Improves docs/reference/types
Motivation and context
N/A
Migration notes
N/A
Checklist
- [ ] The change come with new or modified tests
- [ ] Hard-to-understand functions have explanatory comments
- [x] End-user documentation is updated to reflect the change
</details>
<details >
<summary>
Add a comparison b/n metatype and other similar solutions/products. (<a href="https://github.com/metatypedev/metatype/pull/697">#697</a>)
</summary>
<!--
Pull requests are squash merged using:
- their title as the commit message
- their description as the commit body
Having a good title and description is important for the users to get
readable changelog.
-->
<!-- 1. Explain below WHAT the change is -->
- Adds a comparison table between metatype and other similar services.
- Add artifact upload protocol to
Architecture
section in docs.
<!-- 2. Explain below WHY the change cannot be made simpler -->
<!-- 3. Explain below WHY the was made or link an issue number -->
MET-443
<!-- 4. Explain HOW users should update their code or remove that
section -->
Migration notes
No Migration Needed
<!-- 5. Readiness checklist
- [ ] The change come with new or modified tests
- [ ] Hard-to-understand functions have explanatory comments
- [ ] End-user documentation is updated to reflect the change
-->
</details>
Features
<details >
<summary>
(cli) Long running discovery (<a href="https://github.com/metatypedev/metatype/pull/599">#599</a>)
</summary>
Delegate serialize, deploy, undeploy, unpack work to SDK.
Motivation and context
Remove duplicate logic, thinking of cli as a convenience on top of the
SDK.
Migration notes
When meta cli is used, Migration files are unpacked/resolved relative to
the typegraph's path, not the process's workdir
.
Checklist
- [x] The change come with new or modified tests
- [x] Hard-to-understand functions have explanatory comments
- [ ] End-user documentation is updated to reflect the change
</details>
<details >
<summary>
(cli) `meta gen` (<a href="https://github.com/metatypedev/metatype/pull/636">#636</a>)
</summary>
Adds a command to meta-cli
to invoke metagen.
Motivation and context
MET-424
Migration notes
No changes required
Checklist
- [x] The change come with new or modified tests
- [ ] Hard-to-understand functions have explanatory comments
- [ ] End-user documentation is updated to reflect the change
</details>
<details >
<summary>
(cli) Timeout loader process (<a href="https://github.com/metatypedev/metatype/pull/693">#693</a>)
</summary>
</details>
<details >
<summary>
(cli,sdk) Codegen command (<a href="https://github.com/metatypedev/metatype/pull/661">#661</a>)
</summary>
Motivation and context
Enable back codegen
on current cli implementation.
Migration notes
None
Checklist
- [x] The change come with new or modified tests
- [ ] Hard-to-understand functions have explanatory comments
- [ ] End-user documentation is updated to reflect the change
</details>
<details >
<summary>
(cli,sdk) Better error messages (<a href="https://github.com/metatypedev/metatype/pull/689">#689</a>)
</summary>
Motivation and context
Make it more clear where failures happen
Migration notes
None
Checklist
- [ ] The change come with new or modified tests
- [ ] Hard-to-understand functions have explanatory comments
- [ ] End-user documentation is updated to reflect the change
</details>
<details open>
<summary>
(gate) Wasmtime support (<a href="https://github.com/metatypedev/metatype/pull/669">#669</a>)
- BREAKING: wasmtime support (<a href="https://github.com/metatypedev/metatype/pull/669">#669</a>)
</summary>
Motivation and context
Enable support for
wit
and facilitate readiness for the upcoming specs.
Migration notes
#[wasmedge_bindgen]
are replaced by wit bindings.
In the old version we were restricted to#[wasmedge_bindgen]
, which was
only available in Rust and unique to WasmEdge.
#[wasmedge_bindgen]
fn add(a: u32, b: u32) -> u32 {
a + b
}
In the new implementation, wasm modules written in any language that
uses the wit
interface are now natively supported within typegate
.
// wit/example.wit
package example:host;
world host {
export add: func(a: u32, b: u32) -> u32;
}
An implementation (eg. in Rust) may look like this..
// src/lib.rs
wit_bindgen::generate!({ world: "host" });
struct MyLib;
impl Guest for MyLib {
fn add(a: u32, b: u32) -> u32 {
a + b
}
}
export!(MyLib);
Checklist
- [x] The change come with new or modified tests
- [x] Hard-to-understand functions have explanatory comments
- [ ] End-user documentation is updated to reflect the change
</details>
<details >
<summary>
(gate,cli) `$DENO_V8_FLAGS` (<a href="https://github.com/metatypedev/metatype/pull/647">#647</a>)
</summary>
Enables the DENO_V8_FLAGS
env var for tuning v8.
Motivation and context
MET-435 or #621
Migration notes
- This just exposes the deno paramter directly. Refer to deno or v8 docs
for more details.
Checklist
- [x] The change come with new or modified tests
- [ ] Hard-to-understand functions have explanatory comments
- [x] End-user documentation is updated to reflect the change
</details>
<details >
<summary>
(metagen) Metagen mdk rust (<a href="https://github.com/metatypedev/metatype/pull/624">#624</a>)
</summary>
Implements the general framework for metagen including a generator for
rust based wasm mat functions modules.
Motivation and context
MET-420
Migration notes
No breaking changes
Checklist
- [x] The change come with new or modified tests
- [ ] Hard-to-understand functions have explanatory comments
- [ ] End-user documentation is updated to reflect the change
</details>
<details >
<summary>
(sdk) .tgignore file support (<a href="https://github.com/metatypedev/metatype/pull/633">#633</a>)
</summary>
Motivation and context
Set what files/folders should be ignored when using the custom
expand_path
function in an external .tgignore
file.
.tgignore
will behave similarly to most .ignore files with basic glob
syntax support.
Migration notes
expand_glob
has been renamed to expand_path
Checklist
- [x] The change come with new or modified tests
- [ ] Hard-to-understand functions have explanatory comments
- [ ] End-user documentation is updated to reflect the change
</details>
<details >
<summary>
(sdk) Introduce flag for disabling hashing artifacts + move hash to rust (<a href="https://github.com/metatypedev/metatype/pull/645">#645</a>)
</summary>
Motivation and context
The mdk codegen and typegraph mutually depends on each other (typegraph
needs a concrete mdk.wasm for hashing, and for the mdk.wasm to be built,
it needs type generation based on the typegraph)
Add a flag to enable processing a partial typegraph when using meta gen
(partial == no artifact resolution).
Migration notes
get_file_hash
has been moved to core sdk (under the name hash_file
)
Checklist
- [x] The change come with new or modified tests
- [ ] Hard-to-understand functions have explanatory comments
- [ ] End-user documentation is updated to reflect the change
</details>
<details >
<summary>
(sdk, gate, cli) Upload protocol poc uploading wasm file for `WasmEdge Runtime` for single replica mode (<a href="https://github.com/metatypedev/metatype/pull/631">#631</a>)
</summary>
Upload protocol for wasm files and atrifacts for WasmEdge Runtime
for
single replica mode
Motivation and context
- Upload WasmEdge Runtime artifacts during typegraph deploy
- Access and load WasmEdge Runtime artifacts from the local file system
from typegate
Migration notes
No Migrations Needed
Checklist
- [x] The change come with new or modified tests
- [ ] Hard-to-understand functions have explanatory comments
- [ ] End-user documentation is updated to reflect the change
</details>
<details >
<summary>
Raw prisma query through the typegate runtime (<a href="https://github.com/metatypedev/metatype/pull/634">#634</a>)
</summary>
- Enable prisma query execution through the typegate runtime
Motivation and context
Console.
Migration notes
N/A
Checklist
- [x] The change come with new or modified tests
- [ ] Hard-to-understand functions have explanatory comments
- [ ] End-user documentation is updated to reflect the change
</details>
<details open>
<summary>
Store the typegraph on s3 (<a href="https://github.com/metatypedev/metatype/pull/620">#620</a>)
- BREAKING: Store the typegraph on s3 (<a href="https://github.com/metatypedev/metatype/pull/620">#620</a>)
</summary>
Store the typegraph on s3 for multiple instance support mode.
Motivation and context
Reduce Redis data.
Migration notes
Environment variables:
REDIS_URL
has been removed- For multiple instance support, the following variables are required:
SYNC_REDIS_URL
, SYNC_S3_HOST
, SYNC_S3_REGION
, SYNC_S3_BUCKET
,
SYNC_S3_ACCESS_KEY
, SYNC_S3_SECRET_KEY
; and the following variables
are optional: SYNC_REDIS_PASSWORD
, SYNC_S3_PATH_STYLE
. Otherwise,
none of them can be set.
Checklist
- [x] The change come with new or modified tests
- [ ] Hard-to-understand functions have explanatory comments
- [x] End-user documentation is updated to reflect the change
</details>
<details open>
<summary>
Remove secret definitions through env vars (<a href="https://github.com/metatypedev/metatype/pull/666">#666</a>)
- BREAKING: Remove secret definitions through env vars (<a href="https://github.com/metatypedev/metatype/pull/666">#666</a>)
</summary>
Remove the ability to define secrets in the env vars of the typegate.
Secrets can now only be defined in the metatype config file and the
--secret
CLI option.
Motivation and context
MET-370
Migration notes
- Metatype config file: On the node configuration, secrets are
defined at
secrets.<tg_name>.key
:
# before
typegates:
dev:
env:
TG_CONSOLE_POSTGRES_CONN: postgresql://postgres:password@localhost:5432/db?schema=console
TG_CONSOLE_BASIC_ADMIN: password
#after
typegates:
dev:
secrets:
console:
POSTGRES_CONN: postgresql://postgres:password@localhost:5432/db?schema=console
BASIC_ADMIN: password
- Secret override option on meta/cli
# before
meta deploy -f my-tg.py --secret TG_CONSOLE_POSTGRES_CONN=postgresql://postgres:password@localhost:5432/db?schema=console
# after
meta deploy -f my-tg.py --secret POSTGRES_CONN=postgresql://postgres:password@localhost:5432/db?schema=console
# or - with the typegraph name
meta deploy -f my-tg.py --secret console:POSTGRES_CONN=postgresql://postgres:password@localhost:5432/db?schema=console
Checklist
- [x] The change come with new or modified tests
- [ ] Hard-to-understand functions have explanatory comments
- [x] End-user documentation is updated to reflect the change
</details>
<details >
<summary>
Add queryPrismaModel in the typegate runtime (<a href="https://github.com/metatypedev/metatype/pull/635">#635</a>)
</summary>
The queryPrismaModel
function on the typegate typegraph queries rows
from a prisma model.
Motivation and context
Console.
Migration notes
N/A
Checklist
- [x] The change come with new or modified tests
- [ ] Hard-to-understand functions have explanatory comments
- [ ] End-user documentation is updated to reflect the change
</details>
<details >
<summary>
Upload artifacts to s3 (<a href="https://github.com/metatypedev/metatype/pull/638">#638</a>)
</summary>
Upload artifacts to S3 when sync-mode is enabled
Motivation and context
Sharing artifacts between replicas without including it in the typegraph
(and sync through redis)
Migration notes
No changes needed.
Checklist
- [x] The change come with new or modified tests
- [x] Hard-to-understand functions have explanatory comments
- [ ] End-user documentation is updated to reflect the change
</details>
<details >
<summary>
Upload `PythonRuntime` artifacts and deps (<a href="https://github.com/metatypedev/metatype/pull/672">#672</a>)
</summary>
Motivation and context
Track artifact/module dependencis for PythonRuntime
Migration notes
python.import(...)
and python.import_(...)
accept an optional parameter deps
that accepts list of dependencies for the python module.
Checklist
- [x] The change come with new or modified tests
- [ ] Hard-to-understand functions have explanatory comments
- [ ] End-user documentation is updated to reflect the change
</details>
<details >
<summary>
Upload `DenoRuntime` artifacts and deps (<a href="https://github.com/metatypedev/metatype/pull/674">#674</a>)
</summary>
- [x] Track deno runtime artifacts(also dependencies)
- [x] Upload artifacts during deploy to either local(single replica) or
shared(s3)
- [x] resolve artifacts(module and deps) upon typegate runtime.
Motivation and context
Persisting deno runtime artifacts to a local/shared storage.
Migration notes
deno.import(...)
and deno.import_(...)
accept an optional parameter
that accepts list of dependencies for the deno/ts module.
Checklist
- [x] The change come with new or modified tests
- [ ] Hard-to-understand functions have explanatory comments
- [ ] End-user documentation is updated to reflect the change
</details>
<details >
<summary>
Enable batch prisma queries in the typegate runtime (<a href="https://github.com/metatypedev/metatype/pull/682">#682</a>)
</summary>
Enable batch prisma queries (and transaction) in the typegate runtime
Motivation and context
Console
MET-381
Migration notes
<!-- Explain HOW users should update their code when required -->
Checklist
- [x] The change come with new or modified tests
- [ ] Hard-to-understand functions have explanatory comments
- [ ] End-user documentation is updated to reflect the change
</details>
<details >
<summary>
Artifact removal (<a href="https://github.com/metatypedev/metatype/pull/668">#668</a>)
</summary>
- Add GC: remove artifacts when unreferenced by any deployed typegraph
- Improve resource management: use
AsyncDisposable
and
AsyncDisposableStack
- Improve testability (for parallel testing): always read the tmpDir
config from the
Typegate
object
Motivation and context
MET-433
Migration notes
N/A
Checklist
- [x] The change come with new or modified tests
- [x] Hard-to-understand functions have explanatory comments
- [x] End-user documentation is updated to reflect the change
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
Summary by CodeRabbit
-
New Features
- Enhanced search functionality with the addition of a new search bar.
- Introduced new test configurations to improve script execution.
-
Updated artifact storage documentation to clarify management
processes.
- Added new extensions to support improved code commenting.
-
Bug Fixes
-
Removed outdated Deno import mapping settings to streamline
development environment setup.
-
Documentation
-
Expanded documentation on artifact tracking and management, including
reference counting and garbage collection mechanisms.
-
Refactor
-
Implemented interface changes in QueryEngine
for better async
disposal management.
-
Code restructuring in artifact management for enhanced performance and
maintainability.
-
Chores
-
Adjusted settings and configurations in the development environment to
align with current best practices.
-
Tests
-
Introduced new test cases for artifact upload and management
functionalities.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
</details>
Miscellaneous Tasks
<details >
<summary>
(release) Prepare 0.4.0 (<a href="https://github.com/metatypedev/metatype/pull/710">#710</a>)
</summary>
Bumps version to release 0.4.0.
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
Summary by CodeRabbit
- New Features
- Updated the software across various components to version 0.4.0,
enhancing functionality and potentially introducing new features or
fixes.
- Documentation
- Updated version documentation in multiple configuration files to
reflect new version 0.4.0.
- Bug Fixes
- Adjusted version constants and dependencies to ensure compatibility
and stability with the new software version 0.4.0.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
</details>
<details >
<summary>
(sdk,gate) Bump wasmtime to 20.0.0 and wit-bindgen to 0.24.0 (<a href="https://github.com/metatypedev/metatype/pull/695">#695</a>)
</summary>
</details>
Refactor
<details >
<summary>
(gate) Wasi 0.2 pyrt (<a href="https://github.com/metatypedev/metatype/pull/687">#687</a>)
</summary>
- Rewrites the PythonRuntime host using a
componentize-py
based
component. - Leaf through this
memo for a
mental model.
</details>
<details >
<summary>
(libs/xtask,gate) Remove xtask/codegen (<a href="https://github.com/metatypedev/metatype/pull/700">#700</a>)
</summary>
Faster build time
Migration notes
Make sure to sync typegate/src/types.ts
when an update is made on the
typegraph schema.
</details>
<details open>
<summary>
(sdk,gate) Improve temporal rt (<a href="https://github.com/metatypedev/metatype/pull/642">#642</a>)
- BREAKING: improve temporal rt (<a href="https://github.com/metatypedev/metatype/pull/642">#642</a>)
</summary>
Improve the temporal runtime exposing more parameters and adding more
tests.
Motivation and context
MET-397. The old implementation was bug-ridden and did not expose
necessary params.
Migration notes
API changes to TemporalRuntime
ctor, methods and generated
materializers.
Checklist
- [x] The change come with new or modified tests
- [ ] Hard-to-understand functions have explanatory comments
- [x] End-user documentation is updated to reflect the change
</details>
<details >
<summary>
Pass test options in the first parameter (<a href="https://github.com/metatypedev/metatype/pull/667">#667</a>)
</summary>
Pass the test options in the first parameter along with the test
name/description.
Motivation and context
Avoid scrolling to the end of the test function to see/update the test
options.
Migration notes
N/A
Checklist
- [ ] The change come with new or modified tests
- [ ] Hard-to-understand functions have explanatory comments
- [ ] End-user documentation is updated to reflect the change
</details>
Testing
<details >
<summary>
Use local npm registry for tests (<a href="https://github.com/metatypedev/metatype/pull/646">#646</a>)
</summary>
Use verdaccio local npm registry for tests:
- The
@typegraph/sdk
package is published to the local npm registry,
and can now be consumed like any npm package from Nodejs or Deno.
Motivation and context
...
Migration notes
N/A
Checklist
- [x] The change come with new or modified tests
- [ ] Hard-to-understand functions have explanatory comments
- [ ] End-user documentation is updated to reflect the change
</details>