Releases: Cohesible/synapse
v0.0.11
New features
- Smart test caching - only re-run tests with changed inputs
before
andafter
test hooks - run code before and/or after every test in a suitemove-resource
command - useful for refactoring, allows you to move existing resources to a new location in source codeimport-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
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
forconst service = new HttpService()
- Only some resources have separate logs. Currently, this is limited to
Function
andHttpService
.
- You can provide an identifer to filter the logs, e.g.
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 combiningsymEval
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 forquery-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 theif-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. ofBucket
to persist state after being moved bymigrate
v0.0.9
BREAKING CHANGES:
Bucket.get
now returnsBlob | undefined
if no encoding is provided- Reworked
HttpService.addRoute
intoHttpService.route
. Route handlers are now provided aRequest
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
Changes:
- Added
repl
command - Fixed command validation not checking for missing args
synapse init --template <name>
now downloads fromexamples/<name>
in the root of this repo- Example:
synapse init --template sdk-and-cli
- Example:
v0.0.7
Changes:
- Add
build
command for creating single-executable applications (SEAs)
v0.0.6
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
Changes:
- Fixed native binding generation on Windows
- Improved AWS Lambda request/response serdes to better align with local
Function
invocations
v0.0.4
Changes:
- Improved provider code generation
- Fixed noisy log errors when downloading Zig
v0.0.3
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
Changes:
- Build caches are now invalidated when
tsconfig.json
changes- This doesn't account for
extends
yet
- This doesn't account for
- 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