[v1.2.3] Praxis

Praxis

Praxis is a collection of utilities and more compiled into one mega-library.

The following are included in Praxis:

  • Bucket (Instance tracking and cleanup)
  • Symbol (Creates blank userdata that can be turned into a string when coerced)
  • Typer (Strict typechecking in runtime implementation)
  • TracebackUtils (Utilities related to debug library)
  • SeamStoryUtils (Utilities for Seam stories in UI Labs)
  • ProgressionUtils (Collection of utilities for currency, quests, and more)
  • Initializer (Safely initializes modules, either ordered or unordered.)
  • Signal (A Luau class mockup of Roblox signals and connections)
  • DialogueTree (Dialogue system backend for conversational features with non-player characters)
  • TagUtils (Simple wrapper for CollectionService)
  • Bezier (A bezier curve utility module)
  • ValuePacker (Utility for packing and unpacking values into arrays of values)
  • Oklab (Module for converting Color3 values to and from Oklab color values)
  • EffectPlayer (Plays visual effects through VFX plugin standardized format)
  • Child (Utility function for finding children, with wait behavior)
  • Optional (Wrapper for require; if module doesn’t exist, value is nil)
  • Badges (A collection of utilities for reading and awarding badges)
  • SerDes (Serialization and deserialization utilities using ValuePacker with buffer support.)
  • DataStore (DataStore wrapper with serialized table saves and reconciliation support.)
  • Input (Utilities related to player input)
  • RateLimiter (Utilities related to rate limiting)
  • Time (Utilities related to time, including for daily rewards)
  • Binder (Binds OOP classes to Roblox instances)
  • Select (Used to select singular values from a list of arguments)
  • Replicator (Server-to-client diff-based replication system)

Documentation

You can learn about everything included with the documentation website:

Installation

You can either:

  • Install each module individually as Wally packages (each documented on the website)
  • Download the entirety of Praxis from the releases page

Contribute

Contributions are welcome! You can:

Support

You can get support for anything in Praxis by using my support server: iGottic OSS

9 Likes

Praxis v1.1.0

  • Added Select, which is used to select singular values from a list of arguments
  • Added Pesde support
  • Published to Pesde

See more: https://praxis.igottic.com/

Introducing Replicator in Praxis v1.2.0

Replicator is a server-to-client diff-based replication system. This is a fantastic way to easily replicate any sort of data you need to any clients you want, without the need for using remotes and states.

Client example:

-- Client
local TestReplicator = Replicator.waitForReplicator("TestReplicator")

print(TestReplicator:Get()) -- Prints current value

TestReplicator.Changed:Connect(function(path : {string}, value : any)
  print(path) -- The path of the change
  print(value) -- The new value in the path
  print(TestReplicator:Get()) -- New state
end)

Server example:

-- Server
local TestReplicator = Replicator.new("TestReplicator", {
  x = 5,
  y = 10,
  z = {
    a = 1,
    b = 2,
    c = 3,
  },
})

TestReplicator:SubscribeAll() -- Allows all players to receive data

TestReplicator:Set({"z", "a"}, 100) -- Sets data.z.a to 100, replicating to subscribed clients

lowkenuinely you should add seam to praxis :fire:
the main seam module btw, lol

I’ve chosen not to since Seam is very grand in scope, much outside of what Praxis is.

oh ok.

Praxis v1.2.2

  • Fixed unknown requires within every package
  • Added support for new type solver
  • In Signal: Fixed a long standing issue with GoodSignal/Sleitnick forks, where the status of cached threads is not checked before attempting to reuse it, which could result in dispatch failing if the thread happened to be closed externally
  • In ValuePacker: Fixed incorrect Oklab function names
  • In Time: Fixed incorrect return types for GetDateTimeUTC. Previously returned DateTime instead of the dictionary of components returned by DateTime:ToUniversalTime()
  • In Child: Fixed Child.FromPathAsync not updating the Object variable, which resulted in all descendant searches happening on root instead
  • In DataStore: Fixed missing dependencies
  • Fixed type errors and other typechecking issues within every package
  • Toolchains have been consolidated, removing aftman in favor of rokit
  • Added CLI tool to rewrite requires for deployment and distribution

This update affects every module under Praxis! Make sure to update the ones you are using for the most up-to-date fixes and typechecking.

Note: v1.2.1 technically exists, but is corrupted. Do not use that version.

Praxis v1.2.3

  • Added support for context initialization in initializer
  • Added support for multiple init names in initializer
  • Fixed error when requiring badges in unpublished place
  • Added Lune to Rokit
  • Changed workspace_members in pesde.toml to publish using resolved imports, changing from src/Packages/* to pesde-dist/Packages/*.
    • Updated rewrite-requires command: lute rewrite-requires -i src/ -o pesde-dist/ -a "pkg=roblox_packages/" -r "pkg=pesde.toml"
  • Changed default.project.json to build Praxis as an rbxm model file from dist.
    • Updated rewrite-requires command: lute rewrite-requires -i src/Packages/Praxis -o dist/ -a "pkg=roblox_packages/" -r "pkg=pesde.toml"
    • Added test.project.json to build as an rbxl place file for testing, in case the old behavior is desired.
  • Added additional build artifacts to .gitignore (rbxl/rbxm(x) files).
  • Removed the usage examples from the rewrite-requires help message, moving them into README.md instead.
  • Better documentation on building from source and the rewrite-requires tool, particularly around standalone builds.