Changelog for extensible-effects-concurrent-2.0.0
Changelog for extensible-effects-concurrent
1.0.0
-
- Allow timers to have custom initial debug log messages
-
- Split
InterruptintoShutdownReasonandInterruptReason - Rename
isProcessDownInterrupttoisLinkedProcessCrashed - Remove experimental type-safe
Receivertype - Rename
StrictDynamictoMessage
- Split
-
- Rename
LogMessage(...)toLogEvent(...) - Introduce a newtype and a type class for log messages:
LogMsgandToLogMsg-
An effort to move towards a specialized
ToLogMsgclass instead of relying onShow -
The new type class
ToLogEventSenderis now used by the logging emitting functions like e.g.:logDebug,logInfo, etc. This allows to rewrite:logNotice ("dettaching: " <> pack (show deadBroker) <> " from: " <> pack (show broker))as:
logNotice "dettaching: " deadBroker " from: " broker
-
- Add
StringLogMsgwith theMSGconstructor - Add
AsLogMsgandshowAsLogMsg - Remove
errorMessageIO,infoMessageIOanddebugMessageIO - Change the
appNameparameter type in someLogWriters fromTexttoString
- Rename
-
Protocol-Server
- All protocol server type class instances now expect
ToLogMsgorToTypeLogMsginstances whereShowandTypeablewas used before. - Remove the phantom type parameter of
Watchdog.CrashReport
- All protocol server type class instances now expect
0.32.0
-
Protocol-Server
- Remove effect parameter from
StartArgumentandInit
- Remove effect parameter from
-
ForkIO Scheduler
- Fix monitor reference leak
- Shorten the process detail output,
and return it from
getProcessState
-
Async Logging
- Fix the asynchronous LogWriter so it does not stop logging after a flood of log messages
0.31.0
- Logging
0.30.0
-
Improve inline code documentation
-
Supervisor:
- Rename to Broker
- Add the
ChildEventneeded by the new watchdog - Add
callByIdandcastById
-
- Introduce a new
Interrupt NoRecoveryclause:ExitOtherProcessNotRunning - Change the second parameter of
ProcessDownfromInterruptOrShutdowntoInterrupt NoRecovery - Introduce new
Interruptreasons for all categories with an existential parameter, that must haveNFData,ShowandTypeableconstraints. - Introduce a new timing primitive:
Delay
- Introduce a new
-
- Upgrade the associated type alias
Modelto an associated type. - Add
mapEffects - Add
coerceEffects
- Upgrade the associated type alias
-
Export the
TimeoutMicrosconstructor -
Add Watchdog a server that watches a Broker and restarts crashed processes registered at the broker.
-
- Add
logCallStack - Add
logMultiLine
- Add
-
- Allow timers to have custom titles via:
sendAfterWithTitlestartTimerWithTitle
- Switch to use the new
Delayprimitive
- Allow timers to have custom titles via:
0.29.2
- Improve
SupervisorAPI: UseInitfrom the effectful server as start argument type.
0.29.1
- Add more constraints to
Embeds - Improve the
CallbackServer - Add
LogWriterEffects - Rewrite
HandleLogWriterso that the instance types have to be effects. TL,DR; This allows shorter type signatures than before.
0.29.0
- Remove the reply type parameter from
HasPdu - Make a new constraint
Embedsthat replacesEmbedProtocol - Rename
EmbedProtocoltoHasPduPrism - Add
EmbeddedPduListtoHasPdu - Add embedded protocols example
- Rename and change
ServesProtocoltoHasEndpointReader
0.28.0
- Simplify
Protocol.Observerregistration API - Rewrite
Protocol.Observer.QueueAPI - Add the
ProcessIdto theProcessDownmessage
0.27.1
- Introduce
HasProcessesandHasSafeProcesseseverywhere
0.27.0
- Improve/fix
EmbedProtocoltype class - Add a this like parameter to the methods of
EffectfulServer - Rename
IsPdutoHasPdu - Remove
GenServerfromEffectfulServerand put it into a new module:Control.Eff.Concurrent.Protocol.CallbackServer - Rename
Control.Eff.Concurrent.Protocol.Requestto(...).Wrapper
0.26.1
- Documentation fixes
Supervisor: Don't start a new process when a process for a child-id exists
0.26.0
- Introduce
ReplyTarget - Change the
sendReplysignature to accept aReplyTarget
0.25.1
- Add
castSingletonandcallSingleton, which use theEndpointReaderandEmbedProtocoltype class. - Change
toObserverto accept an Endpoint of a protocol that embedsObserver x - Add
sendEmbeddedReply - Add
toEmbeddedEndpointandfromEmbeddedEndpoint - Change
StatefulServerclass definition to not addProcessesto the effects by default - Add forgotten re-exports to
Concurrent - Fix the
NFDatainstance forPdu (Observer o) - Put the
Pdudata family inside of a new type classIsPdu
0.25.0
- Improve effect type aliases and module structure, read the details here.
0.24.3
- Add
EmbedProtocolrelated functiontoEmbeddedOrigin
0.24.2
- Add more
EmbedProtocolrelated functions:embedReplySerializerembedRequestOrigin
- Improve documentation for
EffectfulServer - Improve documentation for
StatefulServer
0.24.1
- Add more
EmbedProtocoltuple instances (4-tuple, 5-tuple) - Make
Effectful.Serverinstances composable (See theGenServerTestsfor an example) more details in a seperate file - Add
ProcessTitle- every process now must have a short title text for logging - Add
ProcessDetails- every process can callUpdateProcessDetailsto update its infos about the current state of it for debugging and error tracing purposes. - Add
GetProcessStateto retreive theProcessDetailsfor some other process.
0.24.0
- Get rid of the
PrettyTypeShowconstraint inTangible - Get rid of
LogWriterEffectsand the necessity for someUndecidableInstancesthat came with it - Add
Servermodule forApihandling via type classes- Add
Stateless - Add
GenServer
- Add
- Reimplement
Supervisor
0.23.0
- Include the process id in the console and trace log renderer
- Add a process supervisor similar to Erlang/OTPs simple_one_for_one supervisor.
- Fix
SingleThreadedSchedulerprocess linking bug: A process shall not be interrupted when a linked process exits normally. - Rename ExitReason to Interrupt and make the interrupt and exit handling API more robust.
0.22.1
- Fix duplicated content in RFC-5424 log message renderer
0.22.0
-
Remove
SchedulerProxyruins -
Make message sending strict:
Ensure that every message sent from one process to another is reduced to normal form by the sender.
- Remove all lazy message selectors
- Introduce a newtype wrapper
StrictDynamicaroundDynamicand export only a constructor that deeply evaluates the value to rnf before converting it to aDynamic
-
Change the
ServerAPI for better system vitality: -
Add
callWithTimeout: AcalloverIOwith aTimeoutparameter -
Add more efficient log renderer:
renderLogMessageBodyNoLocationrenderRFC5424NoLocation
0.21.2
- Fix copy-paste error: Remove the
LogsToconstraint fromwithAsyncLogWriter
0.21.1
-
Remove dependency to the
socketandsocket-unixpackages- they are marked as broken by in NixOS
- the code based on
networkis much shorter
-
Rewrite the UDP log writer to use
network -
Rewrite the UnixSocket log writer to use
network
0.21.0
-
Add more log message renderers
- Multiple extra time stamp formats
- RFC3164
-
Add IO log writer for unix domain sockets, e.g.
/dev/log -
Add IO log writer for UDP
-
Extract and simplify the async logger
-
Extract and simplify the file log writers
0.20.0
- Rewrite Logging API so that usage is not as bloated
0.19.1
- Fix Travis build
- Fix typos
- Fix README
0.19.0
- Adapt to extensible-effects-concurrent 5.0.0.1
- Update to Stackage LTS-13.13
- Improve NIX expressions
- Rewrite the logging API
- Improve Documentation
- Add Examples
0.18.1
- Fix inappropriate
LinkedProcessCrashedinterrupt when a process exits withNotRecovered ProcessFinished
0.18.0
- Split-up and replace
spawnLinkObservationQueuewith a simpler (but more verbose) alternative
0.17.0
- Rename misspelled
spawnLinkObserverationQueuetospawnLinkObservationQueue
0.16.1
- Export
ObserverRegistryconstructors for custom event registration handling
0.16.0
API Stabilization and cleanup release with major API changes.
-
Replace
Control.Eff.Concurrent.Api.ServerwithControl.Eff.Concurrent.Api.Server2and renameControl.Eff.Concurrent.Api.Server2toControl.Eff.Concurrent.Api.Server -
Rewrite
Observerand related modules likeObserver.Queue- Remove all type classes
- Rely on
Server2 - Remove
CallBackObserver - Remove the observer support code in
Server2
-
Remove the
SchedulerProxyparameter and tell library users to enableAllowAmbiguousTypesandTypeApplications- Remove dependent support code like
HasScheduler
- Remove dependent support code like
0.15.0
- Add
ApiRequestandReplytypes - Add
RequestOriginwhich can be used inServer2based Api servers to queue and defer replies toCalls
0.14.3
- Export the functions introduced in 0.14.2 in
Control.Eff.Concurrent.
0.14.2
- Add
Server2functions to spawn and link - Add a
Server2function to defer the reply to aCalls called:handleCallsDeferred
0.14.1
- Add Server2 based observation handling with
handleObservations
0.14.0
- Fix/Improve Server2
0.13.2
- Add
ProcessFinished - Add
tryUninterrupted - Add simpler
Server2
0.13.1
- Remove misguided
MonadCatchconstraints in theObservationQueueReaderfunctions, and useInterruptsinstead
0.13.0
- Fix bad constraints in
Queueobserver
0.12.2
- Fix some compiler warnings
0.12.1
- Fix build errors with GHC-8.6
0.12.0
- Add implicit SchedulerProxy
- Add flushMessages
- Add receiving with timeout
- Add process
Linking andMonitoring. - Make the distinction between recoverable and non-recoverable exit explicit in
the type parameter of
ExitReason, and introduceinterruptXXXXfunctions in addition toshutdownXXXXfunctions, to throw recoverable exits. - Merge
ShutdownRequestandExitReason - Rename
receiveLoopSuchThattoreceiveSelectedLoop - Pass the exit reason to the callback passed to
receiveSelectedLoop - Rename
receiveMessagetoreceiveAnyMessage - Rename
receiveAnyLooptoreceiveAnyLoop - Pass the exit reason to the callback passed to
receiveAnyLoop - Rename
receiveMessagetoreceiveAnyMessage - Rename
receiveMessageAstoreceiveMessage - Rename
receiveLooptoreceiveLoop - Pass the exit reason to the callback passed to
receiveAnyLoop - Remove
SchedulerShuttingDown - Improve logging for exceptions in
ForkIOScheduler - Fix a bug in the logging system that caused all log filters to be forgotten
when using unliftings such as
MonadBaseControl,MonadThrow,MonadCatchandMonadMask - Fix the scheduler shutdown to not always run into the cancellation timeout
0.11.1
- Fix a compilation error
0.11.0
- Change the return type of
spawnCallbackObserverfromBooltoApiServerCmd
0.10.0
- Re-introduce a Logs Effect but keep the LogWriter Reader
- Get rid of the LogWriterProxy and the implicit argument
- Make logging stricter: require log message to be NFData instances
0.9.2
- Try to adapt the dependency versions to make hackage happy again
0.9.1
- Add smart constructors for
MessageSelector - Remove
ReceiveMessageProcessaction - Rename
ReceiveMessageSuchThattoReceiveSelectedMessage - Improve some Show instances, e.g. ProcessId
- Rewrite Logging API:
- Vastly simplified API
0.9.0
- Make
ForkIOSchedulerfaster and more robust - Add
ExitReason - Add
ProcessState - Add
ShutdownRequesttype - Rewrite logging to be a
Readerof aLogWriter - Remove pure logging, the
Logs...constraint must be accompanied byLifted IO(orMonadIO) in many log functions most prominentlysendLogEvent - Add a
lmDistancefield inLogMessage - Add
increaseLogMessageDistanceanddropDistantLogMessagesusing the newlmDistancefield - Add a newtype for the argument to selective receives:
MessageSelector - Add a
makeReferencefunction toProcesswhich will return process local uniqueInts - Rename
spawnServertospawnServerWithEffectsand add a simpler version ofspawnServerWithEffectscalledspawnServer - Make all
ApiHandlerhandler callbacks optional (by changing the type toMaybe ...) ApiHandlermust now return anApiServerCmd.- Add
ApiServerCmdwhich allows handler functions to leave to server loop without exiting the process - Fix
Observer.Queue - Rename fields in
ApiHandler - Add smart constructors for
ApiHandler
0.8.0
- Add selective receive
- Complete
Api.Serverrewrite (simplification) - Move examples to
./examples/and add executables to the cabal file
0.7.3
- Add
withFrozenCallStackto exposed functions - Add
ObserverStatetype alias
0.7.2
- Add
ObservationQueueutility - Fix missing re-exports from
Control.Eff.Concurrent.Api.ClientinControl.Eff.Concurrentintroduced in recent versions
0.7.1
- Improve call-stack support in log messages
- Expose
setLogEventsTimestampandsetLogEventsThreadId
0.7.0
- Remove the parameter from
closeLogChannelAfterthat had the optional: last-log-message-before-channel-closes
0.6.4
- Add
whereIsServer
0.6.3
- Add
ServerReadertype alias
0.6.2
- Fix bad
containersversion boundary
0.6.1
- Improve Experimental Nix Expressions
0.6.0
- Rewrite Logging
- Improve Experimental Nix Expressions
0.5.0.0
- Switch to
extensible-effectsversion3.1.0.0 - Bump to stackage LTS-12.9
- Add
Control.Eff.Log.MessageFactory - Add
Control.Eff.Log.Message
0.4.0.0
- Switch to
extensible-effectsversion3.0.0.0 - Improve single threaded scheduler to be more space efficient
- Add some strictness annotations
- Add
Control.Eff.Loopwith (hopefully) constant spaceforeverandreplicateM_ - Add
Control.Eff.Concurrent, a module that conveniently re-exports most library functions.
0.3.0.2
- Improve single threaded scheduler such that the main process can return a value
0.3.0.1
- Fix a race condition in the SchedulerSession shutdown
- Improve the interactive scheduler session API
- Rename
SchedulerVar->SchedulerSession - Remove
submitPrint
0.3.0.0
- Add support for running and interacting with a scheduler and it's processes from IO, for example from ghci
- Rename
yieldProcesstoexecuteAndResumeOrExit - Add an actual
yieldProcess, that behaves likeyield - Change the return type of function to
()where applicable to avoid all these_ <- sendMessage...orvoid $ sendMessagedances. - Add a simple logging observer:
spawnLoggingObserver - Removed
Control.Eff.Interactive - Removed most functions in
Control.Eff.ExceptionExtra - Make
sendMessageand the reply incallstrict with respect to the message payload
0.2.0.3
- Improve 'Api' documentation
- Improve
LogChannelAPI - Reorganize unit tests
- Hopefully tune travis ci test parameter enough to get a stable build result
0.2.0.2
- Fix minor
stack uploadcomplaints about the cabal file
0.2.0.1
- Simplify IO Exception handling in
ForkIoScheduler, - Add many unit tests for exception, exit and shutdown
0.2.0.0
- Add
SpawntoProcess - Merge
MessagePassingandProcess - Add initial test suite
- Fix shutdown error in
ForkIoScheduler - Rename
DispatchertoScheduler - Add
receiveAnyLoopfunction toProcess - Change
Api.Serverserveto loop instead of handling just one request - Allow combining multiple
ApiHandlersuch that one process can handle multiple APIs
0.1.3.0
- Rename and split
GenServertoApi,Api.Client,Api.Server - Add
registerServer,callRegisteredandcastRegistered - Remove the variant of
castthat returns a boolean
0.1.2.2
- Try to fix version bounds for hackage
0.1.2.1
- Add more documentation
- Simplify Scheduler API
- Make more exception safe
0.1.2.0
- Add Observer module
- Implement Exception handling
- Improve Scheduler shutdown
- Add logging support via the logging-effect library
0.1.1.0
- Substantial API reorganization
- Rename/Move modules
0.1.0.1
- Stack/Cabal/Github Cosmetics
- Travis build job
0.1.0.0
- Initial Version