Bot releases are visible (Hide)
This release fixes a number of bugs preventing stable usage of the beta.2 release in a long running cluster (https://github.com/apple/swift-distributed-actors/pull/1059).
It also performs a number of destructive renames while we still have the ability to do so.
Module rename (!) The DistributedActors
module has been renamed to DistributedCluster
as it explains more precisely what this module is offering (the ClusterSystem
) type.
The Node
and UniqueNode
types have been changed to Cluster.Endpoint
and Cluster.Node
respectively. See https://github.com/apple/swift-distributed-actors/pull/1077 for a more detailed explanation.
Internally we also adopted a new integration testing framework - offering MultiNode tests. This multi node testing framework will initially be matured internally before making it available to users outside the package. https://github.com/apple/swift-distributed-actors/pull/1055
main
by @ktoso in https://github.com/apple/swift-distributed-actors/pull/1067
Full Changelog: https://github.com/apple/swift-distributed-actors/compare/1.0.0-beta.2...1.0.0-beta.3
Published by ktoso about 2 years ago
This release is primarily aimed at supporting Swift 5.7 - due to the updated Swift syntax dependency.
Full Changelog: https://github.com/apple/swift-distributed-actors/compare/0.7.0...0.7.1
Published by ktoso about 2 years ago
This beta release marks major improvements in all surface APIs and completes most of the public surface move to distributed actors and async await. We also added more documentation and will continue adding more examples and guides about using and deploying distributed actor clusters.
A few API changes may still happen like making more methods async etc.
Latest beta documentation is hosted on github pages.
The 1.0.0-beta.2 milestone contains all closed issues for your reference.
Thank you to all contributors!
Full Changelog: https://github.com/apple/swift-distributed-actors/compare/1.0.0-beta.1.1...1.0.0-beta.2
Published by ktoso over 2 years ago
With macOS 13 beta announced, we're able to express the minimum deployment targets in Package.swift and allow developers to use this library without the -disable-availability-checking
flags.
Use macOS 13 Ventura and Xcode 14.0 beta to build this project, and develop using distributed actors 🎉
Full Changelog: https://github.com/apple/swift-distributed-actors/compare/1.0.0-beta.1...1.0.0-beta.1.1
Published by ktoso over 2 years ago
This is the first beta release of the distributed actors and cluster library.
ClusterSystem
implementation, enabling clustered distributed actor
instances,system.cluster.events
, i.e. nodes joining, becoming down and leaving,LifecycleWatch
,DistributedReceptionist
implementation enabling actor discovery,Refer to the reference documentation for more details
Published by ktoso over 2 years ago
Support Swift and Swift Syntax 5.6
The upcoming Swift 5.7 release will not be supported on the release/0.x branch and we will move on towards the language provided distributed actor features.
Full Changelog: https://github.com/apple/swift-distributed-actors/compare/0.6.10...0.7.0
Published by ktoso over 2 years ago
Full Changelog: https://github.com/apple/swift-distributed-actors/compare/0.6.9...0.6.10
Published by ktoso about 3 years ago
Published by ktoso about 3 years ago
Published by ktoso over 3 years ago
More details: https://github.com/apple/swift-distributed-actors/milestone/22?closed=1
Published by ktoso over 3 years ago
Swift 5.4-development updates
May have some issues on linux + 5.4 still.
Published by ktoso over 3 years ago
A total of 1 tickets (including 1 bug 🐞) were resolved in this patch release.
You can view the full changes made on the 0.6.2 milestone.
Published by ktoso about 4 years ago
Available metrics are:
// actor lifecycle counters
first.actors.lifecycle["root:/user", "event:start"] // counter
first.actors.lifecycle["root:/user", "event:stop"] // counter
first.actors.lifecycle["root:/system", "event:start"] // counter
first.actors.lifecycle["root:/system", "event:stop"] // counter
// swim metrics
first.cluster.swim.message.count["direction:out"] // counter
first.cluster.swim.probe.ping["type:successful"] // counter
first.cluster.swim.probe.ping["type:failed"] // counter
first.cluster.swim.probe.pingRequest["type:successful"] // counter
first.cluster.swim.probe.pingRequest["type:failed"] // counter
first.cluster.swim.lha[] // gauge
first.cluster.swim.roundTripTime.pingRequest[] // timer
first.cluster.swim.roundTripTime.pingRequest["type:all"] // timer
first.cluster.swim.roundTripTime.pingRequest["type:firstAck"] // timer
// cluster/swim membership
first.cluster.swim.members["status:alive"] // gauge
first.cluster.swim.members["status:suspect"] // gauge
first.cluster.swim.members["status:unreachable"] // gauge
first.cluster.swim.removedMemberTombstones[] // counter
It is now possible to enable metrics per actor and report them as a groups etc.
For example, one may want to monitor a specific actor and how long deserialization of the messages it receives takes, as well as monitor it's mailbox count while it is active. This can be now done via:
let one: ActorRef<String> = try first.spawn(
"measureMe",
props: .metrics(group: "measureMe", measure: [.mailbox, .deserialization]),
someBehaviorOrActorable
)
resulting in metrics like:
actorSystemName.measureMe.mailbox.count // gauge
actorSystemName.measureMe.deserialization.size // gauge (bytes)
actorSystemName.measureMe.deserialization.time // timer (nanoseconds)
Refer to:
for detailed documentation on the metrics.
A total of 4 tickets (including 1 bug 🐞) were resolved in this patch release.
You can view the full changes made on the 0.6.1 milestone.
commits added removed
2 1079 253 Konrad `ktoso` Malawski
1 0 4 Tomer Doron
Thanks as usual for all the feedback and help to our users and contributors!
Published by ktoso about 4 years ago
The SWIM+Lifeguard cluster membership was extracted from Distributed Actors and released as a stand-alone module as part of the Swift Cluster Membership.
See the blog announcement here: https://swift.org/blog/swift-cluster-membership/
Patterns around storing Actor relates-to-swift-feature t:actor t:docs user-feedback #618
ActorSystem.shutdown() does not invoke callback if system is already shutdown bug 🐞 #760, thank you @budde!
+test actorable call during shutdown should not crash ga:actorable-feature-parity t:actorable #730
=test ensureNodes is too strict; a down may already become a removal ga:cluster t:tests#732
exact nio ssl version for compat with specific project which requires it #738
Actorable and generic actorable types source-gen breaks down 3 - in progress ga:actorable-feature-parity relates-to-swift-feature t:actorable #658
(Make it) Crash process if failure escalates to a Guardian (esp. /system) t:actor t:isolation https://github.com/apple/swift-distributed-actors/issues/31
=build bump to using stable 5.3 swift-syntax #777
SWIM: Do not ensureAssociated, just get associations for unknown nodes 1 - triaged ga:swim t:cluster:swim #428
Ensure we close all associations when we terminate / receive RIP ga:cluster t:cluster:all #600
[radar 68467435] Swift 5.3-dev compilation broken on Linux bug 🐞 failed 💥 relates-to-swift-feature
Foundation.JSONEncoder issue in Swift 5.2.4 Linux bug 🐞 t:serialization #729
!serialization assume _getMangledTypeName is not available #776
=test harden test_gossip_shouldEventuallyStopSpreading failed 💥 t:crdt #771
FAILED: SWIMShellClusteredTests.test_swim_shouldIncreasePingTimeout_whenHighMultiplier failed 💥 ga:swim t:cluster:swim #727
flaky test: 'ActorableExampleRouterTests.test_refRouter_shouldWork' failed 💥 #740
SKIP one integration test because #758 compilation breaks until swift… #773
FAILED: test_interceptor_shouldInterceptSignals failed 💥 t:actor #614
FAILED: ActorableExampleRouterTests test_actorRouter_shouldWork failed 💥 #736
FAILED: DistributedActorsTests.ShootTheOtherNodeClusteredTests test_shootOtherNodeShouldTerminateIt failed 💥 t:cluster:all #390
!!tmp disable test_actorOwned_ORSet_add_many_times #747
=ios fix availability requirements for iOS #731
A total of 27 issues was closed since the 0.5.1 release, including 4 bugs 🐞.
You can view all resolved tickets on the 0.6.0 milestone.
commits added removed
27 4890 5354 Konrad `ktoso` Malawski
2 90 0 Adam Budde
1 130 47 Yim Lee
Published by ktoso over 4 years ago
A total of 1 issues was closed since the 0.5.1 release, including 1 bug 🐞.
Thank you to Yim Lee for spotting and fixing the issue!
You can view all resolved tickets on the 0.5.1 milestone.
commits added removed
1 130 47 Yim Lee
1 27 1 Konrad `ktoso` Malawski
Published by ktoso over 4 years ago
Message
that the actor can receive directly, rather than having to implement .receiveSignal
.park()
call, allowing for simpler "wait until terminated" and building simple 1 file applications. https://github.com/apple/swift-distributed-actors/pull/459
shutdown()
overloads to integrate nicer with swift-service-lifecycle
https://github.com/apple/swift-distributed-actors/issues/230
struct Proxy<Message: Codable>: Actorable { ... }
GossipLogic
and it just works" for end-users, including peer discovery, gossip round management etc.Gossiper
type.ReceptionistInstrumentation
,ActorInstrumentation
, ActorTransportInstrumentation
(incl. Serialization
events), and ActorMailboxInstrumentation
; See example screenshot.ActorInstruments
package definition is fully implemented in type-safe Swifty Instruments DSL, meaning there is no possibility to mis-configure the instrumentation for non-existing fields/tables/schemas:
SwiftyInstruments
DSL, which enabled efficiently building specialized custom instruments for Instruments.app
using plain Swift.
fishForMessage
which allows hooking into event streams and fishing for messages which satisfy some criteria. https://github.com/apple/swift-distributed-actors/issues/474
ClassBehavior
in favor of making Actorable
a first-class citizen in all APIs https://github.com/apple/swift-distributed-actors/issues/562
Logger
for the system to use as base logger: https://github.com/apple/swift-distributed-actors/pull/662 after multiple design discussions and improvements made to swift-logRemotePersonality
for ActorRefs, lessening the use of locks tremendously as well as improving correctness at the same time https://github.com/apple/swift-distributed-actors/issues/382 & https://github.com/apple/swift-distributed-actors/issues/383
Handshake
handling with non-existing or dead nodes, cluster performs exponential backoff when attempting to join such nodes and eventually gives up (rathe than trying to join a dead node forever) https://github.com/apple/swift-distributed-actors/issues/389
Receptionist.Listing
avoiding copying of read-only data to subscribers. Greatly improved scalability of some sample apps, speeding up spawning/registering/looking up 15,000 actors to ~300ms, from previous patological cases of >1minute.Codable
(docs: https://github.com/apple/swift-distributed-actors/issues/538)
Codable
, leading to an easier way between "hello world" and "now my hello world is distributed!"NonTransportableActorMessage
as way to "cheat" when non-codable types intended for local only actor messaging need to be sent around.Serialization.Manifest
and (optionally, when available) _getMangledTypeName
⚠️ Need to discuss future direction with security aspects of this feature and alternative tradeoffs we can take. Had discussions planned but things got rescheduled a bit.LWWRegister
, ORMap
https://github.com/apple/swift-distributed-actors/issues/509 https://github.com/apple/swift-distributed-actors/pull/598 and Codable conformances for all CRDT types https://github.com/apple/swift-distributed-actors/issues/507
// @actor
.
__notAnActorFunction(hello: Hello)
context.stop()
https://github.com/apple/swift-distributed-actors/issues/558
ActorRef
s) forDeathWatch
as well as spawn()
APIsswift run GenActors
is now compatible with Swift 5.3 (as well as 5.2)A total of 128 issues was closed since the 0.4.0 release, including 21 bug 🐞 and 26 failed 💥 tickets, resulting in the best and most stable release we ever made 🎉
We'd also like to thank Anton and Artem for their contributions, thanks!
You can view all resolved tickets on the 0.5.0 milestone.
commits added removed
147 38076 23089 Konrad `ktoso` Malawski
15 3534 1474 Yim Lee
6 1804 829 Anton Volokhov
5 737 608 Tomer Doron
1 17 7 Artem Redkin
Published by ktoso over 4 years ago
Membership
and Cluster.Event
types and infrastructureA total of 41 issues was closed since the 0.3.0 release 🎉
You can view all resolved tickets on the 0.4.0 milestone.
commits added removed
72 21653 16625 Konrad `ktoso` Malawski
11 2449 620 Yim Lee
1 566 0 Erik Hornberger
1 4 1 Tom Doron
Published by ktoso over 4 years ago
Developed an XPC integration Proof of Concept (NOT production ready!), showing how we could utilize the Actor concept's similarity to XPC Services as well as the GenActors infrastructure to generate statically type checked Actor<>
s for interacting and defining XPC services using Actorables.
If or not this PoC will become something serious remains to be seen however -- if this seems compelling (esp. the ability to easily move or interact with code in XPC Services, Remote Nodes and/or Linux isolated processes) all using the same programming model, let us know.
XPCTransport
in DistributedActorsXPC
moduleActorableTestProbe
A total of 9 issues was closed since the previous minor, all of them here: https://github.com/apple/swift-distributed-actors/milestone/7?closed=1
Published by ktoso almost 5 years ago
public
-- fixed.A total of 2 issues were resolved since 0.2.3, see here for details: https://github.com/apple/swift-distributed-actors/milestone/10?closed=1