Rocket.jl
Welcome to Rocket.jl, a powerful reactive programming framework for Julia! 🚀

Rocket.jl brings reactive programming paradigms to Julia, making it easy to work with asynchronous data streams, event-based programming, and reactive patterns. Whether you're building interactive applications, handling real-time data, or managing complex event-driven systems, Rocket.jl provides the tools you need.
Why Rocket.jl?
- 🔄 Reactive Programming: Handle asynchronous data streams with ease
- 🛠️ Rich Operator Library: Transform, filter, and combine data streams using powerful operators
- 🎯 Type-Safe: Leverage Julia's type system for robust reactive applications
- 🚦 Flow Control: Manage complex event flows and data transformations
- ⚡ High Performance: Outperforms other reactive programming libraries in Julia
Quick Example
Here's a fun example that creates a bouncing ball animation using Rocket.jl:
using Rocket, Compose, IJulia
# Function to draw the ball at a given time
function draw_ball(t)
IJulia.clear_output(true)
x = -exp(-0.01t) + 1 # x coordinate
y = -abs(exp(-0.04t)*(cos(0.1t))) + 0.83 # y coordinate
display(compose(context(), circle(x, y, 0.01)))
end
# Create an observable that emits every 20ms, limited to 200 emissions
source = interval(20) |> take(200)
# Subscribe to animate the ball
subscription = subscribe!(source, draw_ball)
# Later, you can stop the animation with:
# unsubscribe!(subscription)This example demonstrates how Rocket.jl can be used for reactive animations. The ball's position is updated based on time, creating a smooth bouncing effect.
Getting Started
New to Rocket.jl? Our Getting Started Guide will walk you through the essential concepts and show you how to build your first reactive applications!
Documentation Structure
API Reference
Looking for specific functionality? Browse our complete API documentation:
Rocket.voidTeardownRocket.AbstractActorRocket.AbstractActorFactoryRocket.AbstractOperatorRocket.AbstractSubjectRocket.AbstractSubjectFactoryRocket.AbstractSubscribableRocket.ActorRocket.ActorProxyRocket.ActorSourceProxyRocket.ActorTraitRocket.ArrayObservableRocket.AsapSchedulerRocket.AsyncSchedulerRocket.BaseActorTraitRocket.BufferActorRocket.CallableTeardownLogicRocket.CircularKeepActorRocket.CompletedObservableRocket.CompletionActorRocket.CompletionActorTraitRocket.ConnectableObservableRocket.ErrorActorRocket.ErrorActorTraitRocket.ExtraArgumentInCompleteCallRocket.FaultedObservableRocket.FunctionActorRocket.FunctionObservableRocket.InconsistentActorWithSubscribableDataTypesErrorRocket.InconsistentSourceActorDataTypesErrorRocket.InconsistentSourceOperatorDataTypesErrorRocket.InconsistentSubjectDataTypesErrorRocket.InferableOperatorRocket.InferableOperatorTraitRocket.InvalidActorTraitRocket.InvalidActorTraitUsageErrorRocket.InvalidMultipleTeardownLogicTraitUsageErrorRocket.InvalidOperatorTraitRocket.InvalidOperatorTraitUsageErrorRocket.InvalidSubjectTraitRocket.InvalidSubjectTraitUsageErrorRocket.InvalidSubscribableTraitRocket.InvalidSubscribableTraitUsageErrorRocket.InvalidTeardownLogicRocket.InvalidTeardownLogicTraitUsageErrorRocket.KeepActorRocket.LabeledObservableRocket.LambdaActorRocket.LeftTypedOperatorRocket.LeftTypedOperatorTraitRocket.LimitSubscribersGuardRocket.LoggerActorRocket.MissingCreateActorFactoryImplementationErrorRocket.MissingDataArgumentInNextCallRocket.MissingErrorArgumentInErrorCallRocket.MissingOnCallImplementationErrorRocket.MissingOnCompleteImplementationErrorRocket.MissingOnErrorImplementationErrorRocket.MissingOnNextImplementationErrorRocket.MissingOnScheduledSubscribeImplementationErrorRocket.MissingOnSubscribeImplementationErrorRocket.MissingOnUnsubscribeImplementationErrorRocket.MissingOperatorRightImplementationErrorRocket.NetworkObservableRocket.NeverObservableRocket.NextActorRocket.NextActorTraitRocket.OperatorTraitRocket.OperatorsCompositionRocket.OverrideHandlerRocket.ProxyObservableRocket.PushEachRocket.PushEachButRocket.PushNewRocket.PushNewButRocket.PushStrategyRocket.RightTypedOperatorRocket.RightTypedOperatorTraitRocket.ScheduledSubscribableRocket.ScheduledSubscribableTraitRocket.ServerActorRocket.SimpleSubscribableTraitRocket.SingleObservableRocket.SourceProxyRocket.StorageActorRocket.SubjectRocket.SubjectFactoryRocket.SubjectTraitRocket.SubscribableRocket.SubscribableTraitRocket.SubstituteHandlerRocket.SyncActorRocket.SyncFileObservableRocket.TapAfterSubscriptionRocket.TapAfterUnsubscriptionRocket.TapBeforeSubscriptionRocket.TapBeforeUnsubscriptionRocket.TeardownRocket.TeardownLogicRocket.TimerObservableRocket.TypedOperatorRocket.TypedOperatorTraitRocket.UnsubscribableTeardownLogicRocket.ValidSubjectTraitRocket.VoidActorRocket.VoidTeardownRocket.VoidTeardownLogicBase.Iterators.enumerateBase.Unicode.lowercaseBase.Unicode.uppercaseBase.countBase.filterBase.firstBase.lastBase.mapBase.maxBase.minBase.reduceBase.sumRocket.BehaviorSubjectRocket.BehaviorSubjectFactoryRocket.PendingSubjectRocket.PendingSubjectFactoryRocket.RecentSubjectRocket.RecentSubjectFactoryRocket.ReplaySubjectRocket.ReplaySubjectFactoryRocket.accumulatedRocket.actor_proxy!Rocket.as_actorRocket.as_operatorRocket.as_subjectRocket.as_subscribableRocket.as_teardownRocket.asyncRocket.bufferRocket.catch_errorRocket.circularkeepRocket.collectLatestRocket.combineLatestRocket.combineLatestUpdatesRocket.combined_typeRocket.complete!Rocket.completedRocket.concatRocket.concat_mapRocket.concat_map_toRocket.connectRocket.connectableRocket.create_actorRocket.create_subjectRocket.default_if_emptyRocket.deferRocket.delayRocket.discontinueRocket.error!Rocket.error_ifRocket.error_if_emptyRocket.error_if_notRocket.exhaust_mapRocket.faultedRocket.fileRocket.filter_typeRocket.findRocket.find_indexRocket.fromRocket.generateRocket.ignoreRocket.intervalRocket.iterableRocket.keepRocket.labeledRocket.lambdaRocket.limit_subscribersRocket.loggerRocket.makeRocket.map_toRocket.merge_mapRocket.mergedRocket.multicastRocket.networkRocket.neverRocket.next!Rocket.noopRocket.ofRocket.on_call!Rocket.on_complete!Rocket.on_error!Rocket.on_next!Rocket.on_subscribe!Rocket.on_unsubscribe!Rocket.operator_rightRocket.overrideRocket.pairwiseRocket.proxyRocket.publishRocket.publish_behaviorRocket.publish_recentRocket.publish_replayRocket.raceRocket.ref_countRocket.rerunRocket.safeRocket.scanRocket.serverRocket.setTimeoutRocket.setstorage!Rocket.shareRocket.share_recentRocket.share_replayRocket.skip_completeRocket.skip_errorRocket.skip_nextRocket.someRocket.source_proxy!Rocket.start_withRocket.storageRocket.subscribe!Rocket.substituteRocket.switch_mapRocket.switch_map_toRocket.syncRocket.takeRocket.take_untilRocket.tapRocket.tap_on_completeRocket.tap_on_subscribeRocket.tap_on_unsubscribeRocket.timerRocket.to_arrayRocket.union_typeRocket.unsubscribe!Rocket.voidRocket.with_latestRocket.zippedRocket.@MStorage
Contributing
We welcome contributions! If you'd like to help improve Rocket.jl, please check out our Contributing Guide.
Acknowledgments
Rocket.jl is inspired by RxJS and brings its powerful reactive programming concepts to the Julia ecosystem.