The Open-Source WorldServer. https://whirlsplash.org
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
Fuwn 0082fd0acb
feat(cli): generate sub-command
1 day ago
.cargo build(cargo): create a fast builds configuration for cargo 1 month ago
.github chore(github): move funding information 6 days ago
.husky ci: sql linting on commit, make task 1 month ago
.whirl feat(config): create `version` key 6 days ago
assets docs(crates): clarify that whirl_db is unimplemented 4 weeks ago
benches style(global): fix license spec 1 week ago
crates feat(cli): generate sub-command 1 day ago
migrations style(migrations): fix sql linting errors 1 month ago
nix build(global): bump toolchain release 2 weeks ago
.czrc refactor(commitizen): move Commitizen configuration to it's own file 2 months ago
.dockerignore fix(docker): the dockering 2 months ago
.editorconfig major: 2 months ago
.env refactor(database): rename database file 2 weeks ago
.envrc chore: Add Nix and Docker support 2 months ago
.gitattributes chore(git): normilize eol to lf 1 month ago
.gitignore feat(docker): expose .whirl directory to host as a volume 2 weeks ago
.license_template style(global): fix license spec 1 week ago
.mergify.yml chore: Create Mergify configuration 2 months ago
CHANGELOG.rst docs(changelog): md -> rst 2 weeks ago
CODEOWNERS chore(github): create code owners file 1 week ago
CONTRIBUTING.rst docs(contributing): md -> rst 2 weeks ago
Cargo.toml refactor: move key defs comment elsewhere 4 weeks ago
LICENSE Initial commit 4 months ago
MAINTAINERS Create MAINTAINERS 3 months ago
Makefile.toml fix(make): docker run commands 3 days ago
README.rst docs(readme): extra doc info 2 weeks ago
SECURITY.rst docs(security): md -> rst 2 weeks ago
VERSION chore(global): create version file 2 months ago
commitlint.config.js chore(git): finally implement commit message linting 2 months ago
default.nix fix(nix): nix builds 1 month ago
diesel.toml refactor(global): move crates around, stricter module isolation 1 month ago
docker-compose.yml style(compose): not much 3 days ago
docker.nix feat(docker): expose .whirl directory to host as a volume 2 weeks ago
package.json chore(deps): update commitlint monorepo to v12.1.4 1 month ago
renovate.json Add renovate.json 2 months ago
rust-toolchain.toml build(global): bump toolchain release 2 weeks ago
rustfmt.toml feat(cli): generate sub-command 1 day ago
shell.nix refactor(database): rename database file 2 weeks ago
yarn.lock chore(deps): update indirect npm deps 2 weeks ago

README.rst

.. raw:: html

<p align="center">
<a href="https://github.com/Whirlsplash/whirl">
<img
src="https://raw.githubusercontent.com/Whirlsplash/assets/master/Whirl.png"
alt="Whirl"
width="220">
</a>
</p>
<h1 align="center">The Open-Source WorldServer.</h1>

<p align="center">

.. image:: https://img.shields.io/discord/821938182274154506
:alt: Discord
:target: https://discord.com/invite/8hn6padWF6

.. image:: https://www.codefactor.io/repository/github/whirlsplash/whirl/badge
:alt: CodeFactor
:target: https://www.codefactor.io/repository/github/whirlsplash/whirl

.. image:: https://img.shields.io/badge/Say%20Thanks-!-1EAEDB.svg
:alt: Say Thanks
:target: https://saythanks.io/to/[email protected]

.. image:: https://img.shields.io/github/license/Whirlsplash/whirl
:alt: License
:target: ./LICENSE

.. raw:: html

</p>

Whirl, an open-source implementation of the
`WorldServer <http://dev.worlds.net/private/GammaDocs/WorldServer.html>`_
protocol in `Rust <https://www.rust-lang.org/>`_.

Purpose
-------

Two *main* reasons;

1. Worlds' official servers are old, slowly deteriorating, and *probably* unmaintained.
2. Worlds is **old**; the shutdown of the servers is inevitable.

**TLDR**: To keep Worlds' legacy going for future generations.

Usage
-----

Use in production environments is **not** recommended as this project is currently under heavy
development.

As stability increases, periodic updates regarding production use will be released (via Discord or
blog).

Documentation
-------------

Documentation about the entire Whirlsplash ecosystem can be found
`here <https://whirlsplash.org/docs/>`_.

If you are looking for explicit documentation of only Whirl's source code, you
must generate them yourself be cloning the repository and running the Cargo
subcommand;

.. code-block:: shell

$ cargo +nightly doc --open --document-private-items --no-deps # or `cargo make gen-docs`

Known Issues
------------

- https://github.com/Whirlsplash/whirl/issues/2

Contributing
------------

Please reference the `contribution guidelines <./CONTRIBUTING.md>`_ of this repository.

Development Dependencies
------------------------

Required
~~~~~~~~

- `Rust <https://www.rust-lang.org/>`_ — The backbone of it all.
- `diesel\_cli <https://crates.io/crates/diesel_cli>`_ — Database migrations, setup, et cetera
- `cargo-make <https://github.com/sagiegurari/cargo-make>`_ — Cross-platform
`make <https://www.gnu.org/software/make/>`_ substitute

Optional
~~~~~~~~

- `cargo-watch <https://crates.io/crates/cargo-watch>`_ — Recompilation on file-system changes
- `sqlfluff <https://github.com/sqlfluff/sqlfluff>`_ — SQL linting
- `Valgrind <https://www.valgrind.org/>`_ — Benchmarking

*These development dependencies (excluding sqlfluff) will automatically be satisfied if you are
using the Nix shell configuration as provided.*

Benchmarking
------------

For the time being; benchmarking is only available for \*nix-based environments as the benchmarking
utility currently in place, `Iai <https://github.com/bheisler/iai>`_, has a hard dependency on
`Valgrind <https://github.com/bheisler/iai>`_ which is only accessible within \*nix-based
environments.

More so, the current benchmarks which have been set-up do not cover the full extent of Whirl, but a
small portion of the crates which make up Whirl as a whole. In the future, benchmarks may be
expanded upon.

To execute the available benchmarks, use the following Cargo subcommand;

.. code-block:: shell

$ cargo bench

License
~~~~~~~

`GNU General Public License v3.0 <./LICENSE>`_