* Use circular buffer for LimitedQueue * Reduce copying of snapshot * Small optimizations * Remove unneeded lock statements * Add LimitedQueue tests * Fix includes for limited queue benchmark * Update CHANGELOG.md * Use correct boost version iterators * Use a shared_mutex to clarify reads and writes * Update `find`/`rfind` to return the result as a boost::optional * Use `[[nodiscard]]` where applicable * Update comments * Add a couple more doc comments * Replace size with get get is a safe (locked & checked) version of at * Use std::vector in LimitedQueueSnapshot * Update LimitedQueue benchmarks * Add mutex guard to buffer accessors We do not know whether T is an atomic type or not so we can't safely say that we can copy the value at a certain address of the buffer. See https://stackoverflow.com/a/2252478 * Update doc comments, add first/last getters * Make limit_ const * Omit `else` if the if-case always returns * Title case category comments * Remove `at` * Fix `get` comment * Privatize/comment/lock property accessors - `limit` is now private - `space` is now private - `full` has been removed - `empty` now locks * Remove `front` function * Remove `back` method * Add comment to `first` * Add comment to `last` Co-authored-by: Rasmus Karlsson <rasmus.karlsson@pajlada.com>
Chatterino 2

Chatterino 2 is a chat client for Twitch.tv. The Chatterino 2 wiki can be found here. Contribution guidelines can be found here.
Download
Current releases are available at https://chatterino.com. Windows users can also install Chatterino from Chocolatey.
Nightly build
You can download the latest Chatterino 2 build over here
You might also need to install the VC++ Redistributables from Microsoft if you do not have it installed already.
If you still receive an error about MSVCR120.dll missing, then you should install the VC++ 2013 Restributable.
Building
To get source code with required submodules run:
git clone --recurse-submodules https://github.com/Chatterino/chatterino2.git
or
git clone https://github.com/Chatterino/chatterino2.git
cd chatterino2
git submodule update --init --recursive
Building on Windows with vcpkg
Code style
The code is formatted using clang format in Qt Creator. .clang-format contains the style file for clang format.
Get it automated with QT Creator + Beautifier + Clang Format
- Download LLVM: https://github.com/llvm/llvm-project/releases/download/llvmorg-11.0.0/LLVM-11.0.0-win64.exe
- During the installation, make sure to add it to your path
- In QT Creator, select
Help>About Plugins>C++>Beautifierto enable the plugin - Restart QT Creator
- Select
Tools>Options>Beautifier - Under
GeneralselectTool: ClangFormatand enableAutomatic Formatting on File Save - Under
Clang FormatselectUse predefined style: FileandFallback style: None
Qt creator should now format the documents when saving it.
Doxygen
Doxygen is used to generate project information daily and is available here.