Skip to content

Releases: devlaam/Leucine

0.6.1

14 Mar 16:03
Compare
Choose a tag to compare

Code was freed from unused statements and made ready to compile without warnings under Scala 3.4.0). Furthermore we increased the following versions:

  • scala: 3.3.0 => 3.3.3
  • scala-js: 1.13.2 => 1.15.0
  • scala-native: 0.4.15 => 0.4.17
  • sbt-assembly: 2.1.1 => 2.2.0
  • sbt-version-policy: 2.1.3 => 3.2.0

0.6.0

06 Sep 09:21
Compare
Choose a tag to compare

Squashed minor bug in demo (used 'server' whereas it should be 'clock`) and further increased the versions of the libs/tools:

  • scala: 3.2.1 => 3.3.0
  • scala-js: 1.12.0 => 1.13.2
  • scala-native: 0.4.11 => 0.4.15
  • sbt: 1.8.2 => 1.9.4
  • sbt-assembly: 1.2.0 => 2.1.1
  • sbt-scalajs-crossproject: 1.2.0 => 1.3.2
  • sbt-scala-native-crossproject: 1.2.0 => 1.3.2
  • sbt-version-policy: 2.1.0 => 2.1.3

If you are not yet on these versions, you may use 0.5.5, which is functionally identical to 0.6.0.

0.5.5

05 Sep 16:16
Compare
Choose a tag to compare

Improved names of some method calls for clarity:

  • dump(anchor: Object = this) becomes clearTiming(anchor: Object = this)
  • dumpAll() becomes clearAllTiming()

0.5.3

13 Jul 16:29
Compare
Choose a tag to compare

With the new Process mixin aids you can now make use of message handling via partial functions. These are stored as function objects on a stack and can be manipulated with some stack operators like Push, Pop and Keep. See the documentation for all the details. This extra facility makes the transition from Akka to Leucine easier, but are also of value in their own right.

0.5.2

02 Jul 15:39
Compare
Choose a tag to compare

Changes were in the code that is related to the use of families:

  • It is now possible to define a shared actor between all children of a parent actor. This has the advantage that a get on the actors name directly has the expected type, so casting is reduced.
  • It is now possible to reuse the actor defining types (such as RestrictDefine) as family defining types as well, provided you use the same base type for all actors. Since this is strongly advised, the reuse make code shorter. You can, of course, still use separate definitions.
  • Extra tests where introduced, which also pointed out some type errors in the code, rendering some particular use cases impossible. These have been corrected.
  • Relaying has been refactored, and is now based on the same code for each type of base actor.
  • Internal traits FamilyChild and FamilyParent interchanged. For historic reasons these were defined 'reversed'. This has no external consequences.
  • Ensured the code is compatible with Scala version 3.3.0 for a coming upgrade.

0.5.1

24 Jun 13:47
Compare
Choose a tag to compare

Most important noticeable difference are the changes in the GlobalMonitor. This is now easier to use and produces more relevant information. See the wiki for the details. Internally the Family mixins have been changed a lot (removed the match types) but it did not yet result in code that is easier to use. This remains on the wish list. Besides that, there were lots of minor internal changes as well as updates to the comments.

0.5.0

06 Jun 13:07
Compare
Choose a tag to compare

Many improvements and adjustments, among which:

  • In AcceptActor providing a sender is now possible, but optional as well. Motivation: Debugging is a lot easier if you can keep track of where the messages are originating.
  • Spliced the Monitor in two. You can now use a LocalMonitor for quick debugging on the fly, great for just a few actors. Or you can use the system wide GlobalMonitor for all actors at once.
  • Two of the demo's can now show this by added the debug flag to their startup command. See the Readme for more info.
  • Tracing can now be switched on/off from within the actor to be able to focus on a specific moment in the message handling.
  • Tracing info itself is more clear.
  • Context traces (=debugging of the actor system itself) can now be rerouted by the user (to log, stdio or other string handling function).
  • Added mailbox protection alarms and unhandled messages to the internal metric, so you can keep an eye on them.
  • Added a general mechanism to catch all unhandled messages (a bit like the dead-letters in Akka, but put under your own control).
  • Stopping the RefuseActor is now on equal footing with the others. Calling done() is no longer possible.
  • Renamed and hidden some internal methods.
  • Added the possibility to get the processLoad from an actor in short time intervals (used to be only over entire lifespan).

0.4.3

25 May 10:10
Compare
Choose a tag to compare

Improved the usability of the RefuseActor. You can now split the workload into parts that can be interrupted.

0.4.2

23 May 09:33
Compare
Choose a tag to compare

The version has the new WideActor added. It accepts all messages from all actors. A bit like accepting Any, but it uses Actor.Letter[Actor] as base type. This actor comes in handy when you are in the transition from an already running system under for example Akka (untyped) to Leucince. First change all actors to WideActor and when everything works again, start making the letters typed, and move over to SelectActor or RestrictActor. WideActor should in fact not be used for new designs, but not because it will be deprecated, but because it makes you actors effectively untyped.

0.4.1

18 May 14:54
Compare
Choose a tag to compare

Relaying of messages in a family is no longer default. This saves a lot type errors you may encounter when defining families of actors where you do not need relaying at all. It comes with a price. If you want to use relaying, it is activated by using different family mixin's (FamilyRoot, FamilyRootRelay, etc) as a well as a special FamilyRelay trait. The special family traits are ugly (such as FamilyBranchRelayedRelay !?), and i don't like them at all, but for now, i have no better solution. My long term goal is to let the user mix in the FamilyRelay only to achieve this effect. However, this requires change of inner type members as a result of that mixing in, and for the moment, i would not know how to achieve this. With each combination of type narrowing, match types and types defined in trait parameters i hit some kind of compilation error.