crdt-lite 0.8.0

A lightweight, column-based CRDT implementation in Rust
Documentation
name: CI

on:
  push:
    branches: [ master ]
  pull_request:
    branches: [ master ]

jobs:
  build-and-test-ubuntu:
    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v2

    - name: Install g++ and clang
      run: sudo apt-get update && sudo apt-get install -y g++ clang

    - name: Compile and Run C++ Tests (Debug - GCC)
      run: |
        g++ -std=c++20 -g -o crdt tests.cpp && ./crdt
        g++ -std=c++20 -g -o list-crdt list_tests.cpp && ./list-crdt
        g++ -std=c++20 -g -o list-changes-crdt list_changes_tests.cpp && ./list-changes-crdt

    - name: Compile and Run C++ Tests (Release - GCC)
      run: |
        g++ -std=c++20 -O3 -DNDEBUG -o crdt_release tests.cpp && ./crdt_release
        g++ -std=c++20 -O3 -DNDEBUG -o list-crdt_release list_tests.cpp && ./list-crdt_release
        g++ -std=c++20 -O3 -DNDEBUG -o list-changes-crdt_release list_changes_tests.cpp && ./list-changes-crdt_release

    - name: Compile and Run C++ Tests (Debug - Clang)
      run: |
        clang++ -std=c++20 -g -o crdt_clang tests.cpp && ./crdt_clang
        clang++ -std=c++20 -g -o list-crdt_clang list_tests.cpp && ./list-crdt_clang
        clang++ -std=c++20 -g -o list-changes-crdt_clang list_changes_tests.cpp && ./list-changes-crdt_clang

    - name: Compile and Run C++ Tests (Release - Clang)
      run: |
        clang++ -std=c++20 -O3 -DNDEBUG -o crdt_clang_release tests.cpp && ./crdt_clang_release
        clang++ -std=c++20 -O3 -DNDEBUG -o list-crdt_clang_release list_tests.cpp && ./list-crdt_clang_release
        clang++ -std=c++20 -O3 -DNDEBUG -o list-changes-crdt_clang_release list_changes_tests.cpp && ./list-changes-crdt_clang_release

    - name: Setup .NET
      uses: actions/setup-dotnet@v1
      with:
        dotnet-version: '8.0.x'

    - name: Restore dependencies
      run: dotnet restore

    - name: Build C# project
      run: dotnet build --no-restore

    - name: Run C# Tests
      run: dotnet run --project crdt-lite.csproj

  build-and-test-windows:
    runs-on: windows-latest

    steps:
    - uses: actions/checkout@v2

    - name: Add MSBuild to PATH
      uses: microsoft/setup-msbuild@v1.0.2

    - name: Setup Developer Command Prompt
      uses: ilammy/msvc-dev-cmd@v1

    - name: Install LLVM and Clang
      uses: crazy-max/ghaction-chocolatey@v2
      with:
        args: install llvm

    - name: Compile and Run C++ Tests with MSVC (Debug)
      run: |
        cl.exe /std:c++20 /EHsc /Fe:crdt.exe tests.cpp && .\crdt.exe
        cl.exe /std:c++20 /EHsc /Fe:list-crdt.exe list_tests.cpp && .\list-crdt.exe
        cl.exe /std:c++20 /EHsc /Fe:list-changes-crdt.exe list_changes_tests.cpp && .\list-changes-crdt.exe
      shell: cmd

    - name: Compile and Run C++ Tests with MSVC (Release)
      run: |
        cl.exe /std:c++20 /EHsc /O2 /DNDEBUG /Fe:crdt_release.exe tests.cpp && .\crdt_release.exe
        cl.exe /std:c++20 /EHsc /O2 /DNDEBUG /Fe:list-crdt_release.exe list_tests.cpp && .\list-crdt_release.exe
        cl.exe /std:c++20 /EHsc /O2 /DNDEBUG /Fe:list-changes-crdt_release.exe list_changes_tests.cpp && .\list-changes-crdt_release.exe
      shell: cmd

    - name: Compile and Run C++ Tests with Clang (Debug)
      run: |
        clang++ -std=c++20 -g -o crdt_clang.exe tests.cpp && .\crdt_clang.exe
        clang++ -std=c++20 -g -o list-crdt_clang.exe list_tests.cpp && .\list-crdt_clang.exe
        clang++ -std=c++20 -g -o list-changes-crdt_clang.exe list_changes_tests.cpp && .\list-changes-crdt_clang.exe
      shell: cmd

    - name: Compile and Run C++ Tests with Clang (Release)
      run: |
        clang++ -std=c++20 -O3 -DNDEBUG -o crdt_clang_release.exe tests.cpp && .\crdt_clang_release.exe
        clang++ -std=c++20 -O3 -DNDEBUG -o list-crdt_clang_release.exe list_tests.cpp && .\list-crdt_clang_release.exe
        clang++ -std=c++20 -O3 -DNDEBUG -o list-changes-crdt_clang_release.exe list_changes_tests.cpp && .\list-changes-crdt_clang_release.exe
      shell: cmd

    - name: Setup .NET
      uses: actions/setup-dotnet@v1
      with:
        dotnet-version: '8.0.x'

    - name: Restore dependencies
      run: dotnet restore

    - name: Build C# project
      run: dotnet build --no-restore

    - name: Run C# Tests
      run: dotnet run --project crdt-lite.csproj