Skip to content

Releases: Cohesible/synapse

v0.0.11

31 Aug 01:56
Compare
Choose a tag to compare

New features

  • Smart test caching - only re-run tests with changed inputs
  • before and after test hooks - run code before and/or after every test in a suite
  • move-resource command - useful for refactoring, allows you to move existing resources to a new location in source code
  • import-resource command (experimental) - imports the state of an existing resource into your program

Performance improvements

  • Further reductions in start-up time (10-20%)
  • Reduced overhead for synapse compile
  • (Linux/Mac) Moved to mimalloc 2.1.7 for significantly better allocation performance across threads
  • Improved V8's garbage collector under high-throughput situations

Compilation and synthesis

  • Permissions solver works on bound functions
  • for loop variables are captured per-iteration rather than as a single symbol

Bug fixes

  • Lengthy terminal output now wraps around to subsequent lines instead of truncated
  • query-logs no longer treats user errors as "system" messages
  • Multiple providers of the same type no longer use the same cache key
  • (Windows) Detect changed files correctly for the deploy command
  • (Windows) upgrade no longer silently fails

Features-in-progress

Support for Zig-based native modules (include language server support) is almost complete. This is a major step towards enabling developers to create, share, package, and deploy their own high-performance modules. The end-goal is to produce minimal executables that only include the code absolutely necessary to run.

Significant progress has been made on a CI/CD system that "just works" for Synapse packages/deployments. This will first be used with Synapse itself to iron out any issues before possibly becoming a service offering and/or the source code is made available for self-hosting. The system is of course developed using Synapse.

v0.0.10

19 Jul 01:40
Compare
Choose a tag to compare

Improved performance on macOS and Linux

  • Reduced startup time by 10-20ms or around 33%
  • Slightly faster compilations from updating to TypeScript 5.5.2

New Commands

  • query-logs - shows logs from deployed resources. All resources are checked by default.
    • You can provide an identifer to filter the logs, e.g. query-logs service for const service = new HttpService()
    • Only some resources have separate logs. Currently, this is limited to Function and HttpService.
  • migrate - automatically detects if any deployed resources were renamed or moved in source code, moving them on the next deploy.
    • This is useful if you changed the name of a stateful resource but want to keep the existing state
  • upgrade - check for and potentially install the latest version of the CLI

Core API changes

  • Exposed a generic symEval function for symbolic execution. This is the primary mechanism for automatically determining runtime requirements such as AWS permissions. See the AWS integration for an example of combining symEval with other core APIs.
  • Added a move function to help with refactoring library code. Example usages will be added over time.
  • Added stubWhenBundled to forcefully strip code that you know won't be executed when bundled
  • Added registerLogProvider which can be used to provide logs for query-logs. The provider used for Lambda functions shows the expected inputs/outputs.

Other notable changes

  • Code deployed to AWS API Gateway now automatically returns a 304 if the response has an etag header and it matches the if-none-match header in the request, if present.
  • Improved support for providers from the Terraform registry
  • Fixed installation bug related to caching fs installs
  • The target env is shown when compiling if it's not the default and not passed as a parameter
  • Changed the local impl. of Bucket to persist state after being moved by migrate

v0.0.9

30 Jun 21:54
Compare
Choose a tag to compare

BREAKING CHANGES:

  • Bucket.get now returns Blob | undefined if no encoding is provided
  • Reworked HttpService.addRoute into HttpService.route. Route handlers are now provided a Request object instead of a bespoke interface.
  • Programs are now identified with a different strategy. Existing programs should be moved automatically. Open an issue if you run into any problems.

Fixes for Windows:

  • Incremental builds now work correctly
  • Installed package executables no longer fail
  • Multiple problems with building Synapse from source

v0.0.8

27 Jun 20:13
Compare
Choose a tag to compare

Changes:

  • Added repl command
  • Fixed command validation not checking for missing args
  • synapse init --template <name> now downloads from examples/<name> in the root of this repo
    • Example: synapse init --template sdk-and-cli

v0.0.7

24 Jun 20:53
Compare
Choose a tag to compare

Changes:

  • Add build command for creating single-executable applications (SEAs)

v0.0.6

24 Jun 17:56
Compare
Choose a tag to compare

Changes:

  • Introduce environments
  • Added confirmation prompts when destroying "production-like" deployments
  • Fixed serializing nested functions exported by deployed modules within packages
  • Install scripts are now "GitHub aware" and automatically set themselves up within GitHub runners

v0.0.5

21 Jun 15:24
Compare
Choose a tag to compare

Changes:

  • Fixed native binding generation on Windows
  • Improved AWS Lambda request/response serdes to better align with local Function invocations

v0.0.4

15 Jun 19:08
Compare
Choose a tag to compare

Changes:

  • Improved provider code generation
  • Fixed noisy log errors when downloading Zig

v0.0.3

15 Jun 01:51
Compare
Choose a tag to compare

Changes:

  • Fixed sporadic failures when installing multiple provider versions at the same time
  • Expose build command for building Synapse. This will eventually allow building "singe executable applications" (SEAs).

v0.0.2

12 Jun 22:17
Compare
Choose a tag to compare

Changes:

  • Build caches are now invalidated when tsconfig.json changes
    • This doesn't account for extends yet
  • Expose publish --local command for linking packages locally
    • It's needed to build and test integrations
  • Fixed flaky compilations on Linux
  • Fixed hiding stack frames from internal modules