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.
 
 
 
 
mergify[bot] 2f1c6da65e
Merge pull request #111 from Whirlsplash/renovate/flexi_logger-0.x
3 weeks ago
.cargo build(cargo): create a fast builds configuration for cargo 6 months ago
.github chore(github): move funding information 6 months ago
.husky chore(git): nixfmt hook 5 months ago
.whirl feat(config): create `version` key 6 months ago
assets docs(crates): clarify that whirl_db is unimplemented 6 months ago
benches refactor(whirl_common): rename `seconds_to_hrtime` to `unixts_to_hrtime` 5 months ago
bin feat(vagrant): setup Rust during provisioning 5 months ago
crates Merge pull request #111 from Whirlsplash/renovate/flexi_logger-0.x 3 weeks ago
migrations style(migrations): fix sql linting errors 7 months ago
nix style(nix): nixfmt 5 months ago
.czrc refactor(commitizen): move Commitizen configuration to it's own file 7 months ago
.dockerignore fix(docker): the dockering 7 months ago
.editorconfig revert: fix license template reporting errors 6 months ago
.env refactor(database): rename database file 6 months ago
.envrc chore: Add Nix and Docker support 7 months ago
.gitattributes chore(git): normilize eol to lf 7 months ago
.gitignore ci(vagrant): setup (incomplete) 5 months ago
.license_template revert: fix license template reporting errors 6 months ago
.mergify.yml chore(mergify): drop auto-merge to one review 4 months ago
CHANGELOG.rst docs(changelog): md -> rst 6 months ago
CODEOWNERS chore(github): create code owners file 6 months ago
CONTRIBUTING.rst docs(contributing): md -> rst 6 months ago
Cargo.toml refactor: move key defs comment elsewhere 6 months ago
LICENSE Initial commit 9 months ago
MAINTAINERS Create MAINTAINERS 9 months ago
Makefile.toml chore(make): only run necessary components 4 months ago
README.rst feat(readme): add sub-moto 3 months ago
SECURITY.rst docs(security): md -> rst 6 months ago
VERSION chore(global): create version file 7 months ago
Vagrantfile feat(vagrant): setup Rust during provisioning 5 months ago
commitlint.config.js chore(git): finally implement commit message linting 7 months ago
default.nix style(nix): nixfmt 5 months ago
diesel.toml refactor(global): move crates around, stricter module isolation 7 months ago
docker-compose.yml style(compose): not much 6 months ago
docker.nix style(nix): nixfmt 5 months ago
package.json chore(deps): update commitlint monorepo to v14 1 month ago
renovate.json Add renovate.json 7 months ago
rust-toolchain.toml build(global): bump toolchain release 6 months ago
rustfmt.toml revert(fmt): error on unformatted 5 months ago
shell.nix style(nix): nixfmt 5 months ago
yarn.lock chore(deps): update commitlint monorepo to v14 1 month 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>
<h3 align="center">A Worlds united</h3>

<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://www.valgrind.org/>`_ 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>`_