Skip to content

Releases: proxystore/proxystore

ProxyStore v1.1.0

Choose a tag to compare

@gpauloski gpauloski released this 22 Jul 04:53
v1.1.0
242e19c

Highlights

This release overhauls the way NAT checks are performed within proxystore-endpoint check-nat and on endpoint startup. Note that this is a breaking change to the internal NAT check APIs, but not a breaking change to any endpoint functionality. NAT detection should now be significantly more reliable.

Upgrade Steps

pip install --upgrade proxystore    # or proxystore[all]

What's Changed

Enhancements

  • Add configurable ICE servers to endpoint peer connections by @gpauloski in #781

Bug Fixes

  • Detect NAT mapping behavior instead of RFC 3489 NAT type by @gpauloski in #776

Internal Changes

Documentation

Development Workflows

Security

Full Changelog: v1.0.0...v1.1.0

ProxyStore v1.0.0

Choose a tag to compare

@gpauloski gpauloski released this 02 Apr 02:02
v1.0.0
546201d

I'm finally bumping this package from beta versions to v1.0.0! No breaking changes*; it’s the same tool you’ve been using, just with a grown-up version number.

Since I've now graduated, I’m shifting my focus from adding new features to just keeping things running smoothly. I'll still be around for bug fixes and security updates, but don't expect big new features.

* The globus-sdk version has been updated to v4. This may cause incompatibilities with other packages.

What's Changed

Package Changes

Development Workflows

Full Changelog: v0.8.3...v1.0.0

ProxyStore v0.8.3

Choose a tag to compare

@gpauloski gpauloski released this 04 Sep 01:01
v0.8.3
ab9cbc4

Highlights

This is a bug fix only release.

Upgrade Steps

pip install --upgrade proxystore    # or proxystore[all]

What's Changed

Bug Fixes

  • Fix silent file truncation when very large objects are written by @gpauloski in #705
  • Fix recursion error when using mypy plugin on classes that derive from Proxy by @gpauloski in #709
  • Change Globus user auth to use sub field by @AK2000 in #715

Development Workflows

Full Changelog: v0.8.2...v0.8.3

ProxyStore v0.8.2

Choose a tag to compare

@gpauloski gpauloski released this 13 Jun 15:41
v0.8.2
9a49311

Highlights

Stack traces are now more readable when an error is caught while resolving a proxy.

Upgrade Steps

pip install --upgrade proxystore    # or proxystore[all]

What's Changed

Breaking Changes

Enhancements

  • Support static endpoint host types and revert default to IP by @gpauloski in #687

Internal Changes

Documentation

Package Changes

Full Changelog: v0.8.1...v0.8.2

ProxyStore v0.8.1

Choose a tag to compare

@gpauloski gpauloski released this 18 Apr 19:01
v0.8.1
db511be

Highlights

This release adds quality-of-life improvements to ProxyStore Endpoints and Globus Auth tooling.

Upgrade Steps

pip install --upgrade proxystore    # or proxystore[all]

What's Changed

Enhancements

  • Skip data_access scopes on HA Globus Collections and add CLI option for session required domains by @gpauloski in #680
  • Reduce likelihood of endpoint errors due to certain external environments by @gpauloski in #672

Internal Changes

  • Minor test suite improvements (Python 3.13, warnings, and forking) by @gpauloski in #664

Documentation

Full Changelog: v0.8.0...v0.8.1

ProxyStore v0.8.0

Choose a tag to compare

@gpauloski gpauloski released this 13 Dec 16:34
v0.8.0
c45490f

Highlights

This release migrates Globus Auth tooling to use the Globus SDK's GlobusApp, refactors the experimental streaming interfaces to support more flexible usage and third party integrations, and drops support for Python 3.8. Installing in Python 3.13 generally works, except for [endpoints] due to third-party dependencies.

Upgrade Steps

pip install --upgrade proxystore    # or proxystore[all]

What's Changed

Breaking Changes

  • Refactor streaming interfaces and protocols to support new features by @gpauloski in #641
  • Migrate to Globus SDK's GlobusApp by @gpauloski in #646

Documentation

Package Changes

Development Workflows

Full Changelog: v0.7.1...v0.8.0

ProxyStore v0.7.1

Choose a tag to compare

@gpauloski gpauloski released this 09 Sep 16:19
v0.7.1
494f6a3

Highlights

This release addresses some minor bugs and improves the documentation with update logos, colors, descriptions, and API formatting.

Upgrade Steps

pip install --upgrade proxystore    # or proxystore[all]

What's Changed

Enhancements

  • Enhance compatibility of the StoreExecutor with non-concurrent.futures.Executor types by @gpauloski in #612

Bug Fixes

  • Exclude state by default in LocalConnector config by @gpauloski in #602
  • Improve thread-safety in the Store by @gpauloski in #609
  • Fix deadlock in StoreExecutor test with MacOS runners by @gpauloski in #614
  • Improve which relay registration errors are raised versus retried by @gpauloski in #621

Internal Changes

Documentation

Package Changes

Development Workflows

Full Changelog: v0.7.0...v0.7.1

ProxyStore v0.7.0

Choose a tag to compare

@gpauloski gpauloski released this 18 Jul 15:26
v0.7.0
8274c11

Highlights

This releases introduces a variety of quality of life improvements for ProxyStore.

  • The type and hash of proxied objects are cached in the proxy by default to avoid incidental proxy resolution for common object operations (e.g., isinstance() or insert into hash-map type). See the populate_target flag of the Store to learn more.
  • Added the StoreExecutor, which wraps concurrent.futures.Executor instances with automatic input/output proxying.
  • Improved serialization performance for common scientific datatypes (dataframes and numpy arrays).
  • Improved the mypy plugin.
  • Added the Proxy Patterns paper to the publications.

Upgrade Steps

pip install --upgrade proxystore    # or proxystore[all]

What's Changed

Breaking Changes

Enhancements

  • Support Union types in the mypy plugin and create the ProxyOr[T] type alias by @gpauloski in #575
  • Add the StoreExecutor that wraps concurrent.futures.Executor instances with automatic input/output proxying by @gpauloski in #578
  • Improve mypy plugin error messages by @gpauloski in #588
  • Make StoreConfig a Pydantic BaseModel by @gpauloski in #589
  • Improve serialization performance with buffers and custom type support by @KlaudiuszRydzy in #595

Bug Fixes

  • Fix mypy plugin crashes by defaulting types to Any when internal assertions fail by @gpauloski in #567
  • Fix error messages printing "type" rather than the actual object's type name by @gpauloski in #568
  • Restore defaults in ref proxy trampoline by @gpauloski in #580

Internal Changes

Documentation

  • Fix typo in FAQ by @gpauloski in #571
  • Add FAQ on isinstance() behavior with generic alias types by @gpauloski in #585
  • Clarify populate_target=True behavior with custom (de)serializers in Store.proxy() by @gpauloski in #586
  • Add Proxy Patterns preprint to publications by @gpauloski in #592

Package Changes

New Contributors

Full Changelog: v0.6.5...v0.7.0

ProxyStore v0.6.5

Choose a tag to compare

@gpauloski gpauloski released this 25 Apr 14:21
v0.6.5
0becbb2

Highlights

This primary goal of this release is to improve some of the subtle challenges of working with Proxy objects. Specifically, that (1) serialization can fail on Proxy class attribute access, (2) serializers/compute frameworks will accidentally resolve a Proxy instance when doing simple operations like checking types or hashing, and (3) mypy cannot infer the types of most operations on a Proxy[T].

  • ProxyStore now uses a new slots-based Proxy implementation which will improve serialization compatibility.
  • Store.proxy(..., populate_target=True) will now cache some attributes of the target object so that calling hash() or isinstance() on a proxy does not require the proxy to be resolved.
  • An FAQ guide has been created to discuss these common pitfalls and their remedies.
  • The proxystore.mypy_plugin, when enabled, allows mypy to infer attribute types on Proxy[T].
  • The Store now has a register flag for configuring a Store instances to always register themselves.
  • Added the StaticLifetime

Upgrade Steps

pip install --upgrade proxystore    # or proxystore[all]

What's Changed

Breaking Changes

  • Improve flexibility of Lifetime protocol and add StaticLifetime implementation by @gpauloski in #542

Enhancements

  • Introduce new slots-based Proxy implementation by @gpauloski in #539
  • Add the proxystore.mypy mypy plugin for resolving Proxy[T] types by @gpauloski in #545
  • Add the register flag to auto-register a Store after initialization by @gpauloski in #550
  • Support caching target attributes in Proxy to avoid resolving when using hash() or isinstance() by @gpauloski in #551
  • Generate Store.__repr__() from Store.config() by @gpauloski in #554

Bug Fixes

Documentation

Package Changes

  • Remove citation metadata to preserve Zenodo defaults by @gpauloski in #541

Full Changelog: v0.6.4...v0.6.5

ProxyStore v0.6.4

Choose a tag to compare

@gpauloski gpauloski released this 08 Apr 15:58
v0.6.4
440302b

Highlights

  • Automatic proxy memory management via the "Ownership" model and "Lifetime" managers. Learn more in the new Object Lifetimes Guide.
  • Added the populate_target flag to Store.proxy() for "pre-resolving" proxies.
  • Renamed proxystore.store.future.ProxyFuture to proxystore.store.future.Future.
  • Added support for Pydantic V1.

Upgrade Steps

pip install --upgrade proxystore    # or proxystore[all]

What's Changed

Breaking Changes

Enhancements

  • Add done() method to Future by @gpauloski in #488
  • Add the iter_with_metadata() and iter_objects_with_metadata() methods to StreamConsumer by @gpauloski in #489
  • Implement proxy ownership and borrowing references, rules, and interfaces by @gpauloski in #493
  • Initial proxy ownership model integration for the Store and task execution by @gpauloski in #494
  • Support exponential backoff factor in PollingStoreFactory by @gpauloski in #498
  • Add populate_target flag to Store.proxy() to set created proxies as pre-resolved by @gpauloski in #500
  • Document and add utilities for taking ownership of returned proxies by @gpauloski in #502
  • Expose publisher and subscriber attributes in StreamConsumer and StreamProducer respectively by @gpauloski in #504
  • Leave stores open by default in stream interfaces by @gpauloski in #505
  • Add queue-based Redis shim for streaming by @gpauloski in #511
  • Add Lifetime support for managing shared objects by @gpauloski in #513
  • Improve unregister_store and Store.future() logging by @gpauloski in #524
  • Mark Connector.close() as idempotent by @gpauloski in #526

Bug Fixes

  • Invalidate cache entry when using Store._set() by @gpauloski in #492
  • Fix Store.put_batch() called with empty list in StreamProducer.flush_topic() by @gpauloski in #503
  • Copy target by default in borrow(), mut_borrow(), and into_owned() by @gpauloski in #506
  • Fix submit() resolving RefProxy and RefMutProxy arguments by @gpauloski in #507
  • Fix submit() resolving Proxy arguments (re: #507) by @gpauloski in #508
  • Handle and pass on SIGINT propagated by Uvicorn after cleanup by @gpauloski in #514
  • Prevent evicting the target object when invalidated OwnedProxy instances are garbage collected by @gpauloski in #525
  • Log warning when an EndpointConnector finds an unstarted endpoint by @gpauloski in #529
  • Improve serialization error handling when resolving a proxy by @gpauloski in #531

Internal Changes

Documentation

Package Changes

Development Workflows

Full Changelog: v0.6.3...v0.6.4