Skip to content

Releases: pmmp/RakLib

0.14.1

01 Oct 20:41
2d7bac3
Compare
Choose a tag to compare

Changes since 0.14.0

  • Fixed non-RakNet packet passthru (this broke Query for PocketMine-MP servers on 0.14.0).

0.14.0

22 Sep 16:59
ed27bfd
Compare
Choose a tag to compare

Changes since 0.13.x

  • PHP 8.0 is now required as a minimum.
  • Implemented #105 - new connecting sessions can replace a session in "disconnecting" state from the same IP/port - typically useful in client crash situations
  • Fixed custom disconnect messages sometimes not arriving on shutdown (race condition in channel handling #102)
  • Negative ping values are no longer reported to the server event listener. (This could happen if the client sent a pong with a timestamp in the future relative to server time.)

0.13.1

18 May 21:15
0b2b84f
Compare
Choose a tag to compare

Changes since 0.13.0

  • Fixed depending on unreleased versions of pocketmine/log and pocketmine/binaryutils.

0.13.0

18 May 15:12
6c83e0f
Compare
Choose a tag to compare

This is a major update. It features substantial API changes and is not API-compatible with anything that used version 0.12.

Changes since 0.12.x

Major changes

  • Support for PHP versions lower than 7.4 has been dropped.
  • RakLib no longer depends on pthreads. It's now the user's job to implement whatever systems necessary to use RakLib on a thread, if necessary.
    • A separate library, pocketmine/raklib-ipc is provided, which allows interacting with RakLib using a CSP pattern.
  • Packet filtering at the socket receive level is now supported using PCRE regex patterns.
  • The server implementation now uses cooperative multitasking to process events. This ensures that a flood of network traffic can't prevent events from being processed on the server.

API change highlights

This version features a substantially improved API compared to 0.12.

  • InternetAddress is no longer mutable.

  • UDPServerSocket was moved to raklib\generic\Socket.

  • A new ServerInterface has been introduced.

  • A new ServerEventListener interface has been introduced. This allows directly listening to events on the RakLib server, such as a user packet being received, session ping being updated, etc.

  • Various parts of Session have been isolated into generic components (non-server-specific):

    • A ReceiveReliabilityLayer was extracted, which encapsulates all of the logic needed to take care of inbound packet reliability handling and split packet handling, and ACK/NACK sending.
    • A SendReliabilityLayer was extracted, which encapsulates all of the logic needed to take care of sending outbound packets, splitting them if necessary, and resending them if they get NACKed by the remote peer.
  • Added a ProtocolAcceptor interface, which may be used to alter which versions of RakNet a remote peer may use to connect to the server.

0.12.11

15 Feb 20:13
Compare
Choose a tag to compare

Changes since 0.12.10

  • Fixed error handler logging silenced errors on PHP 8.0.

0.12.10

15 Jan 16:25
48e7055
Compare
Choose a tag to compare

Changes since 0.12.9

  • Now tested on PHP 8.0.

0.12.9

28 Aug 22:08
Compare
Choose a tag to compare

Changes since 0.12.8

  • Code is now tested on PHP 7.4.
  • Cleaned out useless @param and @return annotations which didn't provide any information beyond what was already visible from native types.

0.12.8

28 Aug 21:19
Compare
Choose a tag to compare

Changes since 0.12.7

  • Now depends on pocketmine/log-pthreads in addition to pocketmine/log (separated packages).
  • ext-bcmath is no longer required.
  • Code is now analysed using PHPStan level 7 and phpstan-strict-rules.
  • Loading RakLib.php no longer does any dependency checking - it's assumed that the user is installing RakLib using Composer, which has its own dependency checking which we trust.
  • Fixed a possible bug where the session's send queue would not get flushed during disconnect.
  • Fixed possible crash on failure to decode IPv6 address.

0.12.7

28 Aug 21:15
Compare
Choose a tag to compare

Changes since 0.12.6

  • Now depends on pocketmine/log instead of pocketmine/spl (package was separated).
  • Code is now analysed using PHPStan level 5.

0.12.6

07 Dec 13:47
Compare
Choose a tag to compare

Changes since 0.12.5

  • Fixed several bugs in split packet handling.
  • Fixed off-by-one bug in port validation for InternetAddress.
  • Fixed EncapsulatedPacket::getTotalLength() not including sequence index size.