Skip to content

Releases: proxystore/proxystore

ProxyStore v0.8.3

04 Sep 01:01
v0.8.3
ab9cbc4

Choose a tag to compare

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

13 Jun 15:41
v0.8.2
9a49311

Choose a tag to compare

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

18 Apr 19:01
v0.8.1
db511be

Choose a tag to compare

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

13 Dec 16:34
v0.8.0
c45490f

Choose a tag to compare

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

09 Sep 16:19
v0.7.1
494f6a3

Choose a tag to compare

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

18 Jul 15:26
v0.7.0
8274c11

Choose a tag to compare

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

25 Apr 14:21
v0.6.5
0becbb2

Choose a tag to compare

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

08 Apr 15:58
v0.6.4
440302b

Choose a tag to compare

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

ProxyStore v0.6.3

06 Feb 16:33
v0.6.3
fb3c718

Choose a tag to compare

Highlights

This patch introduces the beta ProxyStore streaming interface. Check out the guide for more info!

Upgrade Steps

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

What's Changed

Enhancements

  • Switch from dataclasses to Pydantic BaseModels for configuration classes by @gpauloski in #446
  • Add prototype streaming interface by @gpauloski in #447
    • Add the RedisPublisher and RedisSubscriber for use with ProxyStore streams by @gpauloski in #451
    • Add the KafkaPublisher and KafkaSubscriber for use with ProxyStore streams by @gpauloski in #452
    • Add the ZeroMQPublisher and ZeroMQSubscriber for use with ProxyStore streams by @gpauloski in #453
    • Make StreamProducer/StreamConsumer not generic by @gpauloski in #466
    • Consolidate streaming-related modules under proxystore.stream by @gpauloski in #468
    • Simplify Producer/Subscriber interfaces and adjust to match other libraries by @gpauloski in #470
    • Make StreamProducer/StreamConsumer generic type containers by @gpauloski in #471
    • Add end of stream events between the StreamProducer and StreamConsumer by @gpauloski in #472
    • StreamProducer controls which Store instances are used for each stream topic by @gpauloski in #473
    • Support aggregation, batching, and filtering in stream interfaces by @gpauloski in #475
    • Add the next_object() and iter_object() methods to StreamConsumer by @gpauloski in #476

Internal Changes

  • Remove redundant unit test docstring requirements by @gpauloski in #469

Documentation

  • Add new protein generation paper by Dharuman et al. by @gpauloski in #438
  • Update and pin mkdocstrings + related packages by @gpauloski in #454
  • Add a ProxyStore Streaming guide by @gpauloski in #457
  • Refresh README with better overview, links, and badges by @gpauloski in #459
  • Alias docs for latest release as stable and make the default by @gpauloski in #460
  • Use latest as canonical docs version and symlink it to latest release by @gpauloski in #474
  • Add Harb et al. featured publication by @gpauloski in #478

Development Workflows

Full Changelog: v0.6.2...v0.6.3

ProxyStore v0.6.2

15 Dec 19:39
v0.6.2
5cc4590

Choose a tag to compare

Highlights

This is a small patch release that improves compatibility with the ProxyStore Extensions package.

  • Features from proxystore-ex are re-exported in proxystore.ex.
  • Documentation has been improved to reflect changes in proxystore-ex.

In addition, Python 3.12 is now fully supported and tested against!

Upgrade Steps

$ pip install --upgrade proxystore[all]

What's Changed

Enhancements

  • Modules in proxystore_ex are re-exported under proxystore.ex by @gpauloski in #428

Internal Changes

Documentation

  • List ProxyStore presentations on publications page of docs by @gpauloski in #423
  • Add proxystore[extensions] installation option to install the extensions package by @gpauloski in #427
  • Add link in table of contents to guides in the extensions package by @gpauloski in #435

Development Workflows

  • Switch auto-formatting from black to ruff format by @gpauloski in #429
  • Bump actions/setup-python from 4 to 5 by @dependabot in #433
  • Fix wrong Python version requested in MacOS Python 3.9 tests by @gpauloski in #426

Full Changelog: v0.6.1...v0.6.2