Releases: obi1kenobi/trustfall
trustfall-v0.8.0
A maintenance release with bugfixes and small quality-of-life improvements that are technically breaking, if you depended on the details of error message types:
- Fix for incorrect type coercion / filtering inside
@optional
that didn't exist: #692, #697 - Breaking changes to the representation of exposed Rust error types: #621
- Lots of small improvements to the quality of diagnostic messages for various kinds of incorrect queries.
All Merged PRs
- Point Trustfall docs links to a fixed tag. by @obi1kenobi in #517
- Weekly
cargo update
of fuzzing dependencies by @obi1kenobi in #518 - Weekly
cargo update
of primary dependencies by @obi1kenobi in #519 - Weekly
cargo update
of fuzzing dependencies by @obi1kenobi in #520 - Weekly
cargo update
of primary dependencies by @obi1kenobi in #521 - Update helper macros documentation and examples. by @obi1kenobi in #522
- Weekly
cargo update
of primary dependencies by @obi1kenobi in #523 - Allow new Safari and iOS in the playground. by @obi1kenobi in #524
- Weekly
cargo update
of fuzzing dependencies by @obi1kenobi in #525 - Weekly
cargo update
of primary dependencies by @obi1kenobi in #526 - Weekly
cargo update
of fuzzing dependencies by @obi1kenobi in #527 - Weekly
cargo update
of primary dependencies by @obi1kenobi in #528 - Weekly
cargo update
of primary dependencies by @obi1kenobi in #529 - Weekly
cargo update
of fuzzing dependencies by @obi1kenobi in #530 - Enable some allow-by-default lints in more of our crates. by @obi1kenobi in #534
- Add GitHub corner to playground. by @obi1kenobi in #531
- Weekly
cargo update
of primary dependencies by @obi1kenobi in #532 - Weekly
cargo update
of fuzzing dependencies by @obi1kenobi in #533 - Weekly
cargo update
of primary dependencies by @obi1kenobi in #535 - Weekly
cargo update
of fuzzing dependencies by @obi1kenobi in #536 - Simplify HN
resolveStartingVertices
by @nvzqz in #537 - Weekly
cargo update
of fuzzing dependencies by @obi1kenobi in #539 - Weekly
cargo update
of primary dependencies by @obi1kenobi in #538 - Add information to unimplemented! messages by @fprasx in #540
- Add reminders when stubgen is done by @fprasx in #543
- iterate through hashmaps in deterministic order by @fprasx in #544
- add help to unreachable message by @fprasx in #542
- Weekly
cargo update
of fuzzing dependencies by @obi1kenobi in #545 - Weekly
cargo update
of primary dependencies by @obi1kenobi in #546 - Weekly
cargo update
of primary dependencies by @obi1kenobi in #550 - Weekly
cargo update
of fuzzing dependencies by @obi1kenobi in #549 - Weekly
cargo update
of fuzzing dependencies by @obi1kenobi in #551 - Weekly
cargo update
of primary dependencies by @obi1kenobi in #552 - Refactor code to avoid new lint. by @obi1kenobi in #556
- Weekly
cargo update
of primary dependencies by @obi1kenobi in #553 - Weekly
cargo update
of primary dependencies by @obi1kenobi in #557 - Weekly
cargo update
of fuzzing dependencies by @obi1kenobi in #554 - Update dependencies by @nvzqz in #559
- Weekly
cargo update
of fuzzing dependencies by @obi1kenobi in #562 - Weekly
cargo update
of primary dependencies by @obi1kenobi in #563 - Update
trustfall_filetests_macros
to syn v2. by @obi1kenobi in #566 - Update GraphQL and regex dependencies to new major versions. by @obi1kenobi in #565
- Weekly
cargo update
of fuzzing dependencies by @obi1kenobi in #567 - Use dependabot to keep GitHub Actions updated. by @obi1kenobi in #568
- Bump actions/setup-node from 3 to 4 by @dependabot in #569
- Bump mozilla-actions/sccache-action from 0.0.3 to 0.0.4 by @dependabot in #573
- Bump actions/download-artifact from 2 to 4 by @dependabot in #571
- Bump actions/cache from 3 to 4 by @dependabot in #572
- Bump actions/setup-python from 4 to 5 by @dependabot in #570
- Bump actions/upload-artifact from 2 to 4 by @dependabot in #575
- Run dependabot only weekly. by @obi1kenobi in #574
- Weekly
cargo update
of fuzzing dependencies by @obi1kenobi in #577 - Weekly
cargo update
of primary dependencies by @obi1kenobi in #576 - Weekly
cargo update
of fuzzing dependencies by @obi1kenobi in #580 - Weekly
cargo update
of primary dependencies by @obi1kenobi in #579 - Weekly
cargo update
of fuzzing dependencies by @obi1kenobi in #583 - Weekly
cargo update
of primary dependencies by @obi1kenobi in #582 - Weekly
cargo update
of primary dependencies by @obi1kenobi in #585 - Weekly
cargo update
of fuzzing dependencies by @obi1kenobi in #584 - Return an error if
@filter
directive is passed an unexpected argument. by @obi1kenobi in #588 - Add parse error variant for bad
@filter
directive operand. by @obi1kenobi in #589 - Eliminate lints. by @obi1kenobi in #581
- Weekly
cargo update
of fuzzing dependencies by @obi1kenobi in #591 - Weekly
cargo update
of primary dependencies by @obi1kenobi in #592 - misc: Fix typo in
trustfall_core::ir::Operation
's docs. by @elenakrittik in #593 - Ensure all .ron files in test data have associated tests. by @obi1kenobi in #590
- feat/594: add
VariableDefinitionInQuery
parse error by @devanbenz in #595 - Weekly
cargo update
of fuzzing dependencies by @obi1kenobi in #596 - Weekly
cargo update
of primary dependencies by @obi1kenobi in #597 - Quote edge parameter names in error to improve readability. by @obi1kenobi in #598
- Weekly
cargo update
of fuzzing dependencies by @obi1kenobi in #599 - Weekly
cargo update
of primary dependencies by @obi1kenobi in #600 - Fix new clippy lints. by @obi1kenobi in #604
- Weekly
cargo update
of fuzzing dependencies by @obi1kenobi in #602 - Weekly
cargo update
of primary dependencies by @obi1kenobi in #603 - feat: small cleanups for query.rs by @devanbenz in #601
- Deprecate
filesystem
test schema file. by @obi1kenobi in #606 - Weekly
cargo update
of fuzzing dependencies by @obi1kenobi in #607 - Weekly
cargo update
of primary dependencies by @obi1kenobi in #608 - Weekly
cargo update
of primary dependencies by @obi1kenobi in #610 - Weekly
cargo update
of fuzzing dependencies by @obi1kenobi in #609 - Upgrade workspace to new major
itertools
version. by @obi1kenobi in #611 - Update trustfall crate reqwest version. by @obi1kenobi in #612
- Update lockfile with...
trustfall-v0.7.1
A major new update to the Adapter
API in order to allow more flexibility when creating and composing adapters: #481
It requires tweaks to adapter implementations to make property and edge resolvers include the V: AsVertex<Self::Vertex> + 'a
generic parameter. In practice, this change should be possible to do with only find-and-replace, since other helper functions like accessor_property!()
or resolve_property_with()
had their APIs updated to dereference via AsVertex
as well. For example: https://github.com/obi1kenobi/trustfall-rustdoc-adapter/pull/305/files#diff-f6f5d3d9607240984eb0cbf4ebcf94307990abe1c5a2092756f48ef35798348f
Other Highlights
- Query evaluation optimization: stop evaluating
@fold
early if it has no outputs and its count is never observed by the query: #423 - Expand the adapter optimizations API with the ability to check which properties are used within a vertex: #449
accessor_property!()
now has a form that allows specifying additional arguments for the function being called: #513- Support
repeatable
on@filter
directives by upgrading to a newer parser version. - Substantial expansion of the queryable surface area
SchemaAdapter
supports. - Changed representation of
FieldValue
to make it cheaper to clone, which our APIs will now do a bit more freely.
All Merged Commits
- Fix publish
trustfall_derive
job name. by @obi1kenobi in #412 - Add
as_arc_str()
andas_arc_slice()
methods onFieldValue
. by @obi1kenobi in #414 - Weekly
cargo update
of fuzzing dependencies by @obi1kenobi in #416 - Weekly
cargo update
of primary dependencies by @obi1kenobi in #417 - Run doctests in CI and fix failures. by @obi1kenobi in #419
- add schema starting edge to schemaadapter by @u9g in #413
- Add
docs
properties toVertexType, Property, Edge
metaschema types. by @obi1kenobi in #422 - Add new test queries by @u9g in #421
- Add negative filter tests by @u9g in #425
- Add a test for no-output folds with @tag on count by @u9g in #427
- Allow querying docs on edge parameters. by @obi1kenobi in #428
- Add impossible filter and dominated filter tests by @u9g in #429
- Add a test for ignoring necessary filters by @u9g in #431
- add min_fold_count_limit optimization by @u9g in #423
- Throw error for tag directive on edge by @u9g in #432
- Add tag on fold test by @u9g in #433
- Weekly
cargo update
of fuzzing dependencies by @obi1kenobi in #436 - Weekly
cargo update
of primary dependencies by @obi1kenobi in #437 - Only use Rust matchers in lint jobs. by @obi1kenobi in #439
- Don't run clippy on dependencies. by @obi1kenobi in #440
- Adding information about the scripts for generating test data on readme by @era in #443
- Convert to pnpm to fix autocompletions by @u9g in #442
- Weekly
cargo update
of fuzzing dependencies by @obi1kenobi in #446 - Weekly
cargo update
of primary dependencies by @obi1kenobi in #447 - Allow any script to be executed anywhere inside the repo by @era in #444
- Fix false assumption of vertex_type being singleton by @u9g in #445
- Add an iterator over all the required properties of a Vertex by @era in #449
- Pin serde to
<1.0.172
. by @obi1kenobi in #452 - Weekly
cargo update
of primary dependencies by @obi1kenobi in #454 - Weekly
cargo update
of fuzzing dependencies by @obi1kenobi in #453 - Upgrade to latest async-graphql-{parser,value} and Add repeatable to all @filter's by @u9g in #458
- Suppress new clippy lints. by @obi1kenobi in #460
- Do not allow users to apply fold, recurse and transform directives to properties by @era in #457
- Use serde 1.0.185, skipping past the version with a precompiled binary. by @obi1kenobi in #459
- Add better filter error message for string instead of array. by @u9g in #461
- Add more tests and rename existing test by @u9g in #462
- Add error for filter where value argument is just ["$"] or ["%"] by @u9g in #463
- Weekly
cargo update
of fuzzing dependencies by @obi1kenobi in #464 - Weekly
cargo update
of primary dependencies by @obi1kenobi in #465 - Remove reference from statically_required_property's FieldValue by @u9g in #466
- Weekly
cargo update
of fuzzing dependencies by @obi1kenobi in #468 - Weekly
cargo update
of primary dependencies by @obi1kenobi in #467 - Weekly
cargo update
of primary dependencies by @obi1kenobi in #469 - Weekly
cargo update
of fuzzing dependencies by @obi1kenobi in #470 - Weekly
cargo update
of fuzzing dependencies by @obi1kenobi in #471 - Weekly
cargo update
of primary dependencies by @obi1kenobi in #472 - Weekly
cargo update
of fuzzing dependencies by @obi1kenobi in #474 - Weekly
cargo update
of primary dependencies by @obi1kenobi in #475 - Bump all crates to 1.70 MSRV. by @obi1kenobi in #476
- Weekly
cargo update
of primary dependencies by @obi1kenobi in #478 - Weekly
cargo update
of fuzzing dependencies by @obi1kenobi in #477 - Add Python 3.12 to test matrix. by @obi1kenobi in #479
- Add Python package classifier for Python 3.12 support. by @obi1kenobi in #480
- Fix new clippy lint. by @obi1kenobi in #484
- Weekly
cargo update
of fuzzing dependencies by @obi1kenobi in #483 - Weekly
cargo update
of primary dependencies by @obi1kenobi in #482 - Move to our own Type type for everything that's exposed in trustfall_core by @u9g in #435
- Upgrade to
actions/checkout@v4
in GitHub Actions. by @obi1kenobi in #486 - Upgrade to the
actions-rust-lang/setup-rust-toolchain
action. by @obi1kenobi in #485 - Build Python wheels for 3.12 on all operating systems. by @obi1kenobi in #487
- Upgrade to node 20 for JS linting. by @obi1kenobi in #488
- Remove
once_cell
dependency from most of the repo's crates. by @obi1kenobi in #489 - Weekly
cargo update
of fuzzing dependencies by @obi1kenobi in #491 - Weekly
cargo update
of primary dependencies by @obi1kenobi in #492 - Add
FUNDING.yml
file. by @obi1kenobi in #493 - Use sccache to speed up test runs. by @obi1kenobi in #494
- Upgrade pytrustfall to pyo3 v0.20. by @obi1kenobi in #496
- Update pnpm by @u9g in #497
- Generate a
__typename
handler branch in stubgen. by @obi1kenobi in #500 - Allow adapters to process types that deref to their vertex type. by @obi1kenobi in #481
- Add better autocomplete patch to playground by @u9g in #498
- Use GitHub permalinks for Adapter docs. by @obi1kenobi in #501
- Weekly
cargo update
of fuzzing dependencies by @obi1kenobi in #502 - Weekly
cargo update
of primary dependencies by @obi1kenobi in #503 - Re-enable playground "accept suggestion" on enter key. Fix HN adapter bu...
trustfall-v0.6.1
A maintenance release, upgrading trustfall_derive
to syn
v2 in an attempt to speed up compilation for our dependents by avoiding the use of multiple major versions of a large crate.
All Merged PRs
- Use workspace dependencies and bump a few internal-only dependencies. by @obi1kenobi in #409
- More use of workspace dependencies. by @obi1kenobi in #410
- Upgrade
trustfall_derive
tosyn
v2. by @obi1kenobi in #411
Full Changelog: trustfall-v0.6.0...trustfall-v0.6.1
trustfall_stubgen-v0.3.0
What's Changed
- Feature: Generate adapter test case using Trustfall's
check_adapter_invariants()
(#389) - Feature: Generate improved edge-handling code in
trustfall_stubgen
(#352)
All Merged PRs
- Fix dependency updater GitHub Action. by @obi1kenobi in #340
- Allow
TryIntoStruct
to unpackEdgeParameters
as well. by @obi1kenobi in #350 - Only declare module tree once in
trustfall_stubgen
. by @obi1kenobi in #351 - Generate more edge-handling code in
trustfall_stubgen
. by @obi1kenobi in #352 - Tweak stubgen so it doesn't generate linty code. by @obi1kenobi in #353
- Remove unnecessary lint suppressions. by @obi1kenobi in #355
- Trigger the CI workflow manually when auto-updating dependencies. by @obi1kenobi in #358
- Add
actions: write
permission to auto-updater workflow. by @obi1kenobi in #360 - Open dependency-updating PRs with a custom access token. by @obi1kenobi in #361
- Weekly
cargo update
of primary dependencies by @obi1kenobi in #362 - Auto-update the fuzzing dependencies via an Actions workflow. by @obi1kenobi in #363
- Use the default GITHUB_TOKEN to auto-merge PRs. by @obi1kenobi in #364
- Better names for the automated workflow's jobs. by @obi1kenobi in #366
- Weekly
cargo update
of fuzzing dependencies by @obi1kenobi in #365 - Bail out if no Cargo.lock changes are needed. by @obi1kenobi in #367
- Print bail-out messages to stdout when updating dependencies. by @obi1kenobi in #368
- Weekly
cargo update
of primary dependencies by @obi1kenobi in #370 - Weekly
cargo update
of fuzzing dependencies by @obi1kenobi in #369 - add InvalidSchemaError::DuplicateFieldDefinition by @u9g in #373
- Implement InvalidSchemaError::DuplicateTypeOrInterfaceDefinition by @u9g in #374
- Add optimization to VertexType entrypoint in schema adapter by @u9g in #339
- Weekly
cargo update
of fuzzing dependencies by @obi1kenobi in #376 - Weekly
cargo update
of primary dependencies by @obi1kenobi in #377 - Update rustdoc playground schema. by @obi1kenobi in #378
- Get rid of unnecessary clone in schema adapter by @u9g in #379
- Update rustdoc adapter version in playground. by @obi1kenobi in #380
- Add more example queries to rustdoc playground. by @obi1kenobi in #381
- Weekly
cargo update
of fuzzing dependencies by @obi1kenobi in #382 - Weekly
cargo update
of primary dependencies by @obi1kenobi in #383 - Query both Rust and crates.io crates in rustdoc playground. by @obi1kenobi in #386
- Fix new clippy lints. by @obi1kenobi in #385
- Enable the
cli
feature intrustfall_stubgen
by default. by @obi1kenobi in #388 - Check that adapters implement declared properties, edges, and coercions. by @obi1kenobi in #384
- Generate invariant-enforcing tests in stubgen adapters. by @obi1kenobi in #389
- Output
__typename
in "items with allowed lints" example rustdoc query. by @obi1kenobi in #391 - Weekly
cargo update
of fuzzing dependencies by @obi1kenobi in #395 - Weekly
cargo update
of primary dependencies by @obi1kenobi in #394 - Allow querying for edge parameter default values. by @obi1kenobi in #396
- Check adapter edge implementation for edges with default values. by @obi1kenobi in #397
- Remove
ron
from dependencies and move to dev-dependencies. by @obi1kenobi in #398 - Remove
chrono
from dependencies. Removes datetime value variant. by @obi1kenobi in #399 - Include vertex
Debug
output in helper panic message. by @obi1kenobi in #401 - Make
FieldValue
cheaper to clone byArc
-ing internally. by @obi1kenobi in #400 - Replace various uses of
vec!
with arrays by @nvzqz in #402 - Make
test_field_value_into
nicer to work with by @nvzqz in #403 - Format with max small heuristics by @nvzqz in #404
- Release Trustfall v0.6 and associated crates. by @obi1kenobi in #405
Full Changelog: trustfall_stubgen-v0.2.2...trustfall_stubgen-v0.3.0
trustfall-v0.6.0
What's Changed
- Breaking: the
FieldValue::DateTime
variant has been removed since it used the unmaintainedchrono
library (#399) - Breaking:
FieldValue::String
andFieldValue::List
now useArc
internally, makingFieldValue
cheap to clone (#400) - Feature: Automatic checker for ensuring
Adapter
implementations implement their schema and uphold invariants (#384) - Feature:
TryIntoStruct
can now also unpackEdgeParameters
(#343) - Feature: when querying schemas using
SchemaAdapter
, it's now possible to query edge parameters' default values (#396)
Feature Highlight: Automatic tests for Adapter
implementations (#384)
The new check_adapter_invariants()
function is a self-contained adapter tester that can ensure you didn't forget to implement any components of your adapter's schema. Using it is as simple as:
pub use trustfall::provider::check_adapter_invariants;
#[test]
fn ensure_adapter_satisfies_invariants() {
let adapter = todo!("get an `impl Adapter` type");
let schema = todo!("get a `&Schema` for our adapter");
check_adapter_invariants(schema, adapter);
}
In addition to catching incomplete schema implementation errors, it also catches violations of other Trustfall adapter invariants, such as context reordering or accidentally dropped data.
For more information, check out its docs: https://github.com/obi1kenobi/trustfall/blob/trustfall-v0.6.0/trustfall_core/src/interpreter/helpers/correctness.rs#L15-L78
Upgrading from Trustfall v0.5.x
The breaking changes should be immaterial to almost all users. Most use cases should be able to upgrade to Trustfall v0.6 without any changes to their own code.
All Merged PRs
- Update stubgen dependency on trustfall. by @obi1kenobi in #330
- Add bin target for
trustfall_stubgen
and ensure deterministic stubs. by @obi1kenobi in #331 - Add CODEOWNERS and repo settings file. by @obi1kenobi in #332
- Fix repo settings file. by @obi1kenobi in #333
- Improve docs and README for
trustfall_stubgen
. by @obi1kenobi in #334 - Add GitHub Actions workflow for automatically bumping dependencies. by @obi1kenobi in #335
- Rename
A-frontend
and addA-playground
label. by @obi1kenobi in #336 - Improve docs for
SchemaAdapter
. by @obi1kenobi in #337 - Minor docs fixes for formatting and consistency. by @obi1kenobi in #338
- Fix dependency updater GitHub Action. by @obi1kenobi in #340
- Allow
TryIntoStruct
to unpackEdgeParameters
as well. by @obi1kenobi in #350 - Only declare module tree once in
trustfall_stubgen
. by @obi1kenobi in #351 - Generate more edge-handling code in
trustfall_stubgen
. by @obi1kenobi in #352 - Tweak stubgen so it doesn't generate linty code. by @obi1kenobi in #353
- Remove unnecessary lint suppressions. by @obi1kenobi in #355
- Trigger the CI workflow manually when auto-updating dependencies. by @obi1kenobi in #358
- Add
actions: write
permission to auto-updater workflow. by @obi1kenobi in #360 - Open dependency-updating PRs with a custom access token. by @obi1kenobi in #361
- Weekly
cargo update
of primary dependencies by @obi1kenobi in #362 - Auto-update the fuzzing dependencies via an Actions workflow. by @obi1kenobi in #363
- Use the default GITHUB_TOKEN to auto-merge PRs. by @obi1kenobi in #364
- Better names for the automated workflow's jobs. by @obi1kenobi in #366
- Weekly
cargo update
of fuzzing dependencies by @obi1kenobi in #365 - Bail out if no Cargo.lock changes are needed. by @obi1kenobi in #367
- Print bail-out messages to stdout when updating dependencies. by @obi1kenobi in #368
- Weekly
cargo update
of primary dependencies by @obi1kenobi in #370 - Weekly
cargo update
of fuzzing dependencies by @obi1kenobi in #369 - add InvalidSchemaError::DuplicateFieldDefinition by @u9g in #373
- Implement InvalidSchemaError::DuplicateTypeOrInterfaceDefinition by @u9g in #374
- Add optimization to VertexType entrypoint in schema adapter by @u9g in #339
- Weekly
cargo update
of fuzzing dependencies by @obi1kenobi in #376 - Weekly
cargo update
of primary dependencies by @obi1kenobi in #377 - Update rustdoc playground schema. by @obi1kenobi in #378
- Get rid of unnecessary clone in schema adapter by @u9g in #379
- Update rustdoc adapter version in playground. by @obi1kenobi in #380
- Add more example queries to rustdoc playground. by @obi1kenobi in #381
- Weekly
cargo update
of fuzzing dependencies by @obi1kenobi in #382 - Weekly
cargo update
of primary dependencies by @obi1kenobi in #383 - Query both Rust and crates.io crates in rustdoc playground. by @obi1kenobi in #386
- Fix new clippy lints. by @obi1kenobi in #385
- Enable the
cli
feature intrustfall_stubgen
by default. by @obi1kenobi in #388 - Check that adapters implement declared properties, edges, and coercions. by @obi1kenobi in #384
- Generate invariant-enforcing tests in stubgen adapters. by @obi1kenobi in #389
- Output
__typename
in "items with allowed lints" example rustdoc query. by @obi1kenobi in #391 - Weekly
cargo update
of fuzzing dependencies by @obi1kenobi in #395 - Weekly
cargo update
of primary dependencies by @obi1kenobi in #394 - Allow querying for edge parameter default values. by @obi1kenobi in #396
- Check adapter edge implementation for edges with default values. by @obi1kenobi in #397
- Remove
ron
from dependencies and move to dev-dependencies. by @obi1kenobi in #398 - Remove
chrono
from dependencies. Removes datetime value variant. by @obi1kenobi in #399 - Include vertex
Debug
output in helper panic message. by @obi1kenobi in #401 - Make
FieldValue
cheaper to clone byArc
-ing internally. by @obi1kenobi in #400 - Replace various uses of
vec!
with arrays by @nvzqz in #402 - Make
test_field_value_into
nicer to work with by @nvzqz in #403 - Format with max small heuristics by @nvzqz in #404
- Release Trustfall v0.6 and associated crates. by @obi1kenobi in #405
Full Changelog: trustfall-v0.5.1...trustfall-v0.6.0
trustfall_stubgen-v0.2.1
New crate: trustfall_stubgen
Given a Trustfall schema, autogenerate a high-quality Rust adapter stub fully wired up with all types, properties, and edges referenced in the schema.
First, install this crate's CLI with: cargo install --locked trustfall_stubgen --features cli
Then generate Trustfall adapter stubs for your schema with:
trustfall_stubgen --schema <your_schema.graphql> --target <output_directory>
Under the hood this directly calls the generate_rust_stub()
function from this crate. This crate can also be used as a library, so you can call that function directly from your own code without going through the CLI.
The generated Trustfall adapter stub has the following structure:
file name | purpose |
---|---|
adapter/mod.rs | connects everything together |
adapter/schema.graphql | contains the schema for the adapter |
adapter/adapter.rs | contains the adapter implementation |
adapter/vertex.rs | contains the vertex type definition |
adapter/entrypoints.rs | contains the entry points where all queries must start |
adapter/properties.rs | contains the property implementations |
adapter/edges.rs | contains the edge implementations |
See an example of a generated adapter stub from this crate's test suite.
Trustfall v0.5.1
What's Changed
Added a SchemaAdapter
that allows running Trustfall queries against Trustfall schemas, like so:
{
VertexType {
name @output
edge {
edge_name: name @output
parameter_: parameter @fold {
name @output
}
}
}
}
For a given schema, running this query returns all edges on all vertex types, together with a list of the parameters those edges take.
All Merged PRs
- Replace
lazy_static
withonce_cell
by @nvzqz in #298 - trustfall_core: Optimize
serde_type_serializer
by @nvzqz in #297 - Use v2 resolver in virtual workspace to avoid implicit v1 default. by @obi1kenobi in #299
- Refactor materializeWebsite in browser_based_querying by @u9g in #300
- Use
trustfall-rustdoc-adapter
to power rustdoc Trustfall playground. by @obi1kenobi in #306 - Add
--all-targets
flag tocargo test
command. by @obi1kenobi in #307 - Update all dependencies. by @obi1kenobi in #308
- Add
supertrait
edge to rustdoc schema. by @obi1kenobi in #309 - Add adapter for querying Trustfall schemas. by @obi1kenobi in #312
- Replace HRTBs with
DeserializeOwned
by @nvzqz in #313 - Simplify definitions and impls of
Vertex
-containing types by @nvzqz in #314 - Add
FieldValue::as_f64()
conversion method. by @obi1kenobi in #315 - Add two new rustdoc example queries. by @obi1kenobi in #319
- Minor fixes to test infrastructure. by @obi1kenobi in #320
- Set MSRV and other workspace-wide keys. by @obi1kenobi in #321
- Improve schema error messages with undefined or cyclic type definitions. by @obi1kenobi in #322
- Update repo dependencies. by @obi1kenobi in #323
- Crate for generating adapter stubs given a schema. by @obi1kenobi in #324
- Publish trustfall_stubgen and run its tests only at publish time. by @obi1kenobi in #325
- Add version to trustfall_stubgen requirement for trustfall. by @obi1kenobi in #326
- Support publishing new crates with our pipeline. by @obi1kenobi in #327
- Minor typo fixes in publishing code. by @obi1kenobi in #328
- Publish new
trustfall
andtrustfall_core
to exposeSchemaAdapter
. by @obi1kenobi in #329
New Contributors
Full Changelog: trustfall-v0.5.0...trustfall-v0.5.1
Trustfall v0.5.0
What's Changed
- Breaking:
execute_query()
now takesArc<impl Adapter>
instead ofRc<impl Adapter>
for consistency with other APIs and easier use in web servers: #286 - New
resolve_coercion_using_schema()
helper method to simplify implementing adapters'resolve_coercion()
method. TryIntoStruct
trait for ergonomic result parsing into a struct, for example:
use trustfall::TryIntoStruct;
// Define a struct whose field names and types match
// those returned by a query, and derive `serde::Deserialize` on it.
#[derive(Debug, PartialEq, Eq, serde::Deserialize)]
struct Output {
number: i64,
text: String,
}
// Elsewhere, we run a query that outputs a `number` integer
// and a `text` string field.
let query = r#"
{
Query {
number @output
text @output
}
}
"#;
let results: Vec<_> = execute_query(schema, adapter, query, variables)
.expect("bad query arguments")
.map(|v| v.try_into_struct().expect("struct definition did not match query result shape"))
.collect();
// The `try_into_struct()` call turned the query results into `Output` structs.
assert_eq!(
vec![
Output {
number: 42,
text: "the answer to everything".to_string(),
},
],
results,
);
Migrating from Trustfall v0.4
Wrap your adapters in Arc
instead of Rc
before calling execute_query()
.
All Merged PRs
- Add
TryIntoStruct
trait for ergonomic result parsing into a struct. by @obi1kenobi in #275 FilterTypeError
should display the inner error's message. by @obi1kenobi in #278- Update npm and Rust dependency versions. by @obi1kenobi in #279
- Actually put url property on all webpage objects by @u9g in #280
- Move test-related bin functionality out of
trustfall_core
. by @obi1kenobi in #284 - Add helper for resolving coercions based on typename and schema. by @obi1kenobi in #283
- Use
Arc
of adapter to execute queries. by @obi1kenobi in #286 - Ensure we always output the inner error message. by @obi1kenobi in #289
- Clearer error message. by @obi1kenobi in #291
- Add Schema.subtypes to t-wasm by @u9g in #292
- Broaden lifetimes in Hackernews example by @benwis in #293
- Enable trusted publishing for Python packages. by @obi1kenobi in #294
- Release v0.5.0 with
Arc
-based query execution. by @obi1kenobi in #295
New Contributors
Full Changelog: trustfall-v0.4.0...trustfall-v0.5.0
Trustfall v0.4.0
What's Changed
- Breaking:
Adapter
trait methods now take&self
instead of&mut self
to avoid reentrancy bugs: #249 - Breaking: Released the new optimizations API:
Adapter
methods now take aresolve_info
argument that can be used to get information about the query for the purpose of applying optimizations. Incargo-semver-checks
this new API led to a 2354x speedup. - Many smaller bug fixes thanks to 26,000+ lines of new tests and test code.
Migrating from Trustfall v0.3
Replace all BasicAdapter
and Adapter
method receivers with &self
instead of &mut self
.
If you need mutability, you need to do BOTH of these things:
- advance the
ContextIterator
input iterator before doing any mutation, to avoid reentrancy bugs - use
RefCell
around yourAdapter
orBasicAdapter
's mutable state, making sure to not hold its mutable borrow across operations on the inputContextIterator
in order to avoid reentrancy bugs
All Merged PRs
- Use dtolnay's Rust toolchain action instead of the actions-rs ones. by @obi1kenobi in #215
- Modernize more GitHub Actions steps. by @obi1kenobi in #216
- Internal refactor to unblock the new optimizations API. by @obi1kenobi in #217
- Implement the
VertexInfo
notable trait and basic hint functionality. by @obi1kenobi in #219 - Add doc comments to a bunch of the public API. by @obi1kenobi in #220
- Make the edge-facing optimizations API more ergonomic. by @obi1kenobi in #221
- Improve VertexInfo doc comments. by @obi1kenobi in #222
- Improve the
edges_with_name
doc comment. by @obi1kenobi in #223 - Update dependencies. by @obi1kenobi in #218
- Flesh out the candidate values submodule. by @obi1kenobi in #226
- Seal the VertexInfo and InternalVertexInfo traits. by @obi1kenobi in #227
- Allow using
*_property
helper macros without importingFieldValue
by @ginger51011 in #229 - Implement
statically_known_property()
onVertexInfo
. by @obi1kenobi in #228 - Bump json5 from 2.2.1 to 2.2.3 in /experiments/browser_based_querying by @dependabot in #232
- chore: Bump package-lock using npm upgrade by @paavanb in #233
- feat: Bump monaco-graphql, update editor configs by @paavanb in #231
- Implement resolving dynamically-known property values. by @obi1kenobi in #230
- Remove no-longer-needed TODO note. by @obi1kenobi in #234
- Re-export
EdgeInfo
intrustfall
. by @obi1kenobi in #235 - Add remaining new hint-related re-exports. by @obi1kenobi in #236
- Allow the helper functions to take functions with
'vertex
lifetime. by @obi1kenobi in #237 - Release Trustfall v0.4.0-beta.0 to test the new APIs. by @obi1kenobi in #238
- Add a README in the
trustfall/examples
and to theweather
demo. by @obi1kenobi in #239 - Fix new README links. by @obi1kenobi in #240
- Make examples less sensitive to the exact path from which they're run. by @obi1kenobi in #241
- Add more READMEs for example projects. by @obi1kenobi in #242
- Remove accidental character. by @obi1kenobi in #243
- Add another test case to the suite. by @obi1kenobi in #244
- Add fuzz project lint to CI. by @obi1kenobi in #245
- Fix the fuzz targets. by @obi1kenobi in #246
- Add fuzz target for adapter batching behavior tests. by @obi1kenobi in #247
- Make the
Adapter
trait methods take&self
instead of&mut self
. by @obi1kenobi in #249 - Publish v0.4.0-beta.1 with the new
&self
-basedAdapter
API. by @obi1kenobi in #250 - Update dependencies to latest versions. by @obi1kenobi in #251
- Add test cases for the semantics of combining
@optional
+@filter
. by @obi1kenobi in #252 - Add more test cases for edge cases around
@optional
semantics. by @obi1kenobi in #253 - Navigating past an
@optional
edge should disable many hints. by @obi1kenobi in #254 - Update dependency versions. by @obi1kenobi in #256
- Using
@tag
from nonexistent@optional
inside@fold
works now. by @obi1kenobi in #257 - Fix
@tag
on@fold
-related field inside nonexistent@optional
. by @obi1kenobi in #258 - Split off query execution outputs into their own files. by @obi1kenobi in #259
- Check query outputs metadata in the test suite. by @obi1kenobi in #260
- Fix type inference for optional and fold-related outputs. by @obi1kenobi in #261
- Add more fold-related edge cases to the test suite. by @obi1kenobi in #255
- Add
cloned()
methods onRange
andCandidateValue
. by @obi1kenobi in #262 - Rename
FieldValue::as_vec()
toas_vec_with()
. by @obi1kenobi in #263 - Improved documentation for the new optimizations API. by @obi1kenobi in #264
- Release v0.4.0-beta.2 of Trustfall. by @obi1kenobi in #265
- Improve adapter-related docs. by @obi1kenobi in #266
- Improve naming, docs, and ergonomics of
VertexInfo
trait. by @obi1kenobi in #267 - Build
trustfall
docs on docs.rs with the--cfg docsrs
flag. by @obi1kenobi in #269 - Add top-level doc comment in Trustfall crate and improve main README. by @obi1kenobi in #270
- Publish v0.4.0-beta.3 with renamed optimization methods. by @obi1kenobi in #271
- Release v0.4.0 with the new optimization hints API. by @obi1kenobi in #272
New Contributors
- @dependabot made their first contribution in #232
Full Changelog: trustfall-v0.3.4...trustfall-v0.4.0
trustfall_wasm-v0.1.0-533911d
Full Changelog: pytrustfall-v0.1.0-844543d...trustfall_wasm-v0.1.0-533911d