53 lines
2.5 KiB
Markdown
53 lines
2.5 KiB
Markdown
# Development
|
|
|
|
Information about developing the project. If you are only interested in using
|
|
it, you can safely ignore this section. If you plan on contributing, see the
|
|
[contributor's guide](contributing.md).
|
|
|
|
## List of forked dependencies During conduwuit development, we have had to fork
|
|
some dependencies to support our use-cases in some areas. This ranges from
|
|
things said upstream project won't accept for any reason, faster-paced
|
|
development (unresponsive or slow upstream), conduwuit-specific usecases, or
|
|
lack of time to upstream some things.
|
|
|
|
- [ruma/ruma][1]: <https://github.com/girlbossceo/ruwuma> - various performance
|
|
improvements, more features, faster-paced development, client/server interop
|
|
hacks upstream won't accept, etc
|
|
- [facebook/rocksdb][2]: <https://github.com/girlbossceo/rocksdb> - liburing
|
|
build fixes, GCC build fix, and logging callback C API for Rust tracing
|
|
integration
|
|
- [tikv/jemallocator][3]: <https://github.com/girlbossceo/jemallocator> - musl
|
|
builds seem to be broken on upstream
|
|
- [zyansheep/rustyline-async][4]:
|
|
<https://github.com/girlbossceo/rustyline-async> - tab completion callback and
|
|
`CTRL+\` signal quit event for CLI
|
|
- [rust-rocksdb/rust-rocksdb][5]:
|
|
<https://github.com/girlbossceo/rust-rocksdb-zaidoon1> - [`@zaidoon1`'s][8] fork
|
|
has quicker updates, more up to date dependencies. Our changes fix musl build
|
|
issues, Rust part of the logging callback C API, removes unnecessary `gtest`
|
|
include, and uses our RocksDB and jemallocator
|
|
- [tokio-rs/tracing][6]: <https://github.com/girlbossceo/tracing> - Implements
|
|
`Clone` for `EnvFilter` to support dynamically changing tracing envfilter's
|
|
alongside other logging/metrics things
|
|
|
|
## Debugging with `tokio-console`
|
|
|
|
[`tokio-console`][7] can be a useful tool for debugging and profiling. To make a
|
|
`tokio-console`-enabled build of conduwuit, enable the `tokio_console` feature,
|
|
disable the default `release_max_log_level` feature, and set the `--cfg
|
|
tokio_unstable` flag to enable experimental tokio APIs. A build might look like
|
|
this:
|
|
|
|
```bash RUSTFLAGS="--cfg tokio_unstable" cargo build \ --release \
|
|
--no-default-features \
|
|
--features=systemd,element_hacks,gzip_compression,brotli_compression,zstd_compression,tokio_console
|
|
```
|
|
|
|
[1]: https://github.com/ruma/ruma/
|
|
[2]: https://github.com/facebook/rocksdb/
|
|
[3]: https://github.com/tikv/jemallocator/
|
|
[4]: https://github.com/zyansheep/rustyline-async/
|
|
[5]: https://github.com/rust-rocksdb/rust-rocksdb/
|
|
[6]: https://github.com/tokio-rs/tracing/
|
|
[7]: https://docs.rs/tokio-console/latest/tokio_console/
|
|
[8]: https://github.com/zaidoon1/
|