Open-source Rust framework for building event-driven live-trading & backtesting systems

Overview

Barter

Barter is an open-source Rust framework for building event-driven live-trading & backtesting systems. Algorithmic trade with the peace of mind that comes from knowing your strategies have been backtested with a near-identical trading Engine. It is:

  • Fast: Barter provides a multi-threaded trading Engine framework built in high-performance Rust (in-rust-we-trust).
  • Easy: Barter provides a modularised data architecture that focuses on simplicity.
  • Customisable: A set of traits define how every Barter component communicates, providing a highly extensible framework for trading.

See: Barter-Data, Barter-Integration & Barter-Execution

Crates.io MIT licensed Build Status Discord chat

API Documentation | Chat

Overview

Barter is an open-source Rust framework for building event-driven live-trading & backtesting systems. It provides a high-performance, easy to customise trading Engine that enables backtesting strategies on a near-identical system to live trading. The Engine can be controlled by issuing Commands over the Engine's command_tx. Similarly, the Engine's Events can be listened to using the event_rx (useful for event-sourcing). At a high level, it provides several de-coupled components that interact via a set of traits:

  • Data: MarketGenerator trait governs the generation of a MarketEvents that acts as the system heartbeat. For example, a live::MarketFeed implementation is provided that utilises Barter-Data WebSocket integrations to provide live exchange data (ie/ trades, candles, etc).
  • Strategy: The SignalGenerator trait governs potential generation of Signal after analysing incoming MarketEvents. Signals are advisory and sent to the Portfolio for analysis.
  • Portfolio: MarketUpdater, OrderGenerator, and FillUpdater govern global state Portfolio implementations. A Portfolio may generate OrderEvents after receiving advisory SignalEvents from a Strategy. The Portfolio's state updates after receiving MarketEvents and FillEvents.
  • Execution: The ExecutionClient trait governs the generation of FillEvents after receiving OrderEvents from the Portfolio. For example, a SimulatedExecution handler implementation is provided for simulating any exchange execution behaviour required in dry-trading or backtesting runs.
  • Statistic: Provides metrics such as Sharpe Ratio, Calmar Ratio, and Max Drawdown to analyse trading session performance. One-pass dispersion algorithms analyse each closed Position and efficiently calculates a trading summary.
  • Trader: Capable of trading a single market pair using a customisable selection of it's own Data, Strategy & Execution instances, as well as shared access to a global Portfolio.
  • Engine: Multi-threaded trading Engine capable of trading with an arbitrary number of Trader market pairs. Each contained Trader instance operates on its own thread.

Example

  • For brevity: Imports are not included - see /examples for everything you need!
  • For simplicity:
    • Engine and Trader(s) are configuration with hard-coded values rather than loaded in configuration values.
    • Engine only contains one Trader (usually you would have many Traders, one for each Market).
    • Remote Commands (eg/ Command::Terminate, Command::ExitPosition) are not sent to the Engine via it's command_tx, this control over the Engine can be added as per your taste (eg/ connected to an HTTP endpoint).
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    // Setup Logger & Load Config For Engine & Trader Instances Here

    // Create channel to distribute Commands to the Engine & it's Traders (eg/ Command::Terminate)
    let (command_tx, command_rx) = mpsc::channel(20);
    
    // Create Event channel to listen to all Engine Events in real-time
    let (event_tx, event_rx) = mpsc::unbounded_channel();
    let event_tx = EventTx::new(event_tx);
    
    // Generate unique identifier to associate an Engine's components
    let engine_id = Uuid::new_v4();
    
    // Create the Market(s) to be traded on (1-to-1 relationship with a Trader)
    let market = Market::new("binance", ("btc", "usdt", InstrumentKind::Spot));
    
    // Build global shared-state MetaPortfolio (1-to-1 relationship with an Engine)
    let portfolio = Arc::new(Mutex::new(
        MetaPortfolio::builder()
            .engine_id(engine_id)
            .markets(vec![market.clone()])
            .starting_cash(10_000.0)
            .repository(InMemoryRepository::new())
            .allocation_manager(DefaultAllocator { default_order_value: 100.0 })
            .risk_manager(DefaultRisk {})
            .statistic_config(StatisticConfig {
                starting_equity: 10_000.0,
                trading_days_per_year: 365,
                risk_free_return: 0.0,
            })
            .build_and_init()
            .expect("failed to build & initialise MetaPortfolio"),
    ));
    
    // Build Trader(s)
    let mut traders = Vec::new();
    
    // Create channel for each Trader so the Engine can distribute Commands to it
    let (trader_command_tx, trader_command_rx) = mpsc::channel(10);

    traders.push(
        Trader::builder()
            .engine_id(engine_id)
            .market(market.clone())
            .command_rx(trader_command_rx)
            .event_tx(event_tx.clone())
            .portfolio(Arc::clone(&portfolio))
            .data(historical::MarketFeed::new([test_util::market_candle].into_iter()))
            .strategy(RSIStrategy::new(StrategyConfig { rsi_period: 14 }))
            .execution(SimulatedExecution::new(ExecutionConfig {
                simulated_fees_pct: Fees {
                        exchange: 0.1,
                        slippage: 0.05,
                        network: 0.0,}
                }))
            .build()
            .expect("failed to build trader")
    );
    
    // Build Engine (1-to-many relationship with Traders)
    
    // Create HashMap<Market, trader_command_tx> so Engine can route Commands to Traders 
    let trader_command_txs = HashMap::from_iter([(market, trader_command_tx)]);
    
    let engine = Engine::builder()
        .engine_id(engine_id)
        .command_rx(command_rx)
        .portfolio(portfolio)
        .traders(traders)
        .trader_command_txs(trader_command_txs)
        .statistics_summary(TradingSummary::init(StatisticConfig {
            starting_equity: 1000.0,
            trading_days_per_year: 365,
            risk_free_return: 0.0
        }))
        .build()
        .expect("failed to build engine");
        
    // Listen to Engine Events & do something with them
    tokio::spawn(listen_to_events(event_rx)); 
        
    // --- Run Trading Session Until Remote Shutdown OR Data Feed ends naturally (ie/ backtest) ---
    engine.run().await;
}

Getting Help

Firstly, see if the answer to your question can be found in the API Documentation. If the answer is not there, I'd be happy to help to Chat and try answer your question via Discord.

Contributing

๐ŸŽ‰ Thanks for your help in improving the barter ecosystem! Please do get in touch on the discord to discuss development, new features, and the future roadmap.

Related Projects

In addition to the Barter crate, the Barter project also maintains:

  • Barter-Integration: High-performance, low-level framework for composing flexible web integrations.
  • Barter-Data: High performance & normalised WebSocket integration for leading cryptocurrency exchanges - batteries included.
  • Barter-Execution: In development and soon to be integrated.

Roadmap

  • Integrate the new "Barter-Execution" library to provide additional out-of-the-box functionality for executing OrderEvents.
  • Build Strategy utilities for aggregating tick-by-tick Trades and/or Candles into multi-timeframe datastructures, as well as providing an example multi-timeframe Strategy using the utilities.
  • Flesh out the MetaPortfolio Allocator & Risk management systems.
  • And more!

Licence

This project is licensed under the MIT license.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in Barter by you, shall be licensed as MIT, without any additional terms or conditions.

Comments
  • Requesting upgrade `prettytable-rs` to 0.10.0

    Requesting upgrade `prettytable-rs` to 0.10.0

    Background

    Unsoundness is found using the nightly toolchain with prettytable-rs version 0.8.0. Details are found in issue

    Request

    Could you please upgrade prettytable-rs to 0.10.0 which uses safe rust to convert Table to TableSlice.

    Contribution

    I would love to contribute, but I failed to find the branch where 0.8.6 locates.

    opened by chong1144 3
  • Replace old repo URL with GitHub repo URL

    Replace old repo URL with GitHub repo URL

    Replace old repo URL with GitHub repo URL

    Summary

    Pretty much self-explanatory.

    Description

    Replace the old project repo URL with the GitHub repo URL in the following files:

    • lib.rs
    • README.md
      • update MIT license URL
      • update CI pipeline badge
    pr::docs 
    opened by carpetmaker 2
  • Rewrite project history (minimum git tree modifications)

    Rewrite project history (minimum git tree modifications)

    Rewrite project history (minimum git tree modifications)

    Description

    Similar to #6 (accompanying #5 ), this PR also attempts the project git history rewrite, with some minimum necessary changes to the git tree (a.k.a. project files / commit contents). Namely, it replaces the author private name & e-mail from the Cargo.toml project manifest file.

    The task was performed with git filter-branch --tree-filter command.

    Verification

    (see #6 & #5 Verification section)

    Verification process output log
    Info: Comparing versions (1 / 42)
    Info: Checked out v0.1.0 (original branch - 0d1467cc5a1b8318a3d2b4d941b1b8a38bd233a7)
    Info: Checked out v0.1.0 (rebased branch - d9e31acbefb43fce4aa557ee6416d2f978e20e15)
    Warning: branches differ on v0.1.0
    Info: Comparing versions (2 / 42)
    Info: Checked out v0.2.0 (original branch - 5dba365d1fd53630c7aa82943d3faa12aa27f835)
    Info: Checked out v0.2.0 (rebased branch - 22b995685616155ab34c55949de32922b9e662ad)
    Warning: branches differ on v0.2.0
    Info: Comparing versions (3 / 42)
    Info: Checked out v0.2.1 (original branch - 1ff46f09f4db8003c816432c16e718e59e00fdd7)
    Info: Checked out v0.2.1 (rebased branch - 593575bdf637986a27a09ead38071ce516bdef76)
    Warning: branches differ on v0.2.1
    Info: Comparing versions (4 / 42)
    Info: Checked out v0.2.2 (original branch - 68d96309bff2a7fc367dd51b0d5120dc09fc46c6)
    Info: Checked out v0.2.2 (rebased branch - cfe0ec037d61fb57f345749984db2576efb25b03)
    Warning: branches differ on v0.2.2
    Info: Comparing versions (5 / 42)
    Info: Checked out v0.2.3 (original branch - fd85e3d47348e6c772116e368eca253075ea6c00)
    Info: Checked out v0.2.3 (rebased branch - b527decedf7aba18dbc48f5492acaccaa4c4631d)
    Warning: branches differ on v0.2.3
    Info: Comparing versions (6 / 42)
    Info: Checked out v0.2.4 (original branch - ef717c03418840dedfdfc2d95edf950f67ec9e6a)
    Info: Checked out v0.2.4 (rebased branch - f87134a21105b1e29ca57d344645332f37e5dda8)
    Warning: branches differ on v0.2.4
    Info: Comparing versions (7 / 42)
    Info: Checked out v0.2.5 (original branch - 57ec50a8551455c5102b2082a56f89676ffd9be6)
    Info: Checked out v0.2.5 (rebased branch - 435401afdc8705c4ddf7fd333e791acbb2955478)
    Warning: branches differ on v0.2.5
    Info: Comparing versions (8 / 42)
    Info: Checked out v0.2.6 (original branch - 64de2b24a7c11391683c6265ffcb1e00e9a88aec)
    Info: Checked out v0.2.6 (rebased branch - 8b2806dcefdd860c56626e4fa0e4c8d9cd199ce2)
    Warning: branches differ on v0.2.6
    Info: Comparing versions (9 / 42)
    Info: Checked out v0.2.7 (original branch - 830c6c17e611107b53e49cdac44da99bade4687f)
    Info: Checked out v0.2.7 (rebased branch - e26648674299b3d46e23b34d87a24f7f5dcd68e8)
    Warning: branches differ on v0.2.7
    Info: Comparing versions (10 / 42)
    Info: Checked out v0.2.8 (original branch - 430a33b9df0052b24bd170a0f291847035ddbd1c)
    Info: Checked out v0.2.8 (rebased branch - f1afc73401df1d9c2063007afcfe46a2e8ba5595)
    Warning: branches differ on v0.2.8
    Info: Comparing versions (11 / 42)
    Info: Checked out v0.2.9 (original branch - 204b8f5ca50c260c41a1c1f7f6cdedfcd7f64dfd)
    Info: Checked out v0.2.9 (rebased branch - aaeabf0ff2d6e59452a408eaddc770b14f0c6383)
    Warning: branches differ on v0.2.9
    Info: Comparing versions (12 / 42)
    Info: Checked out v0.2.10 (original branch - 22e0d1d765c64c172377b340716910fda1c4aa37)
    Info: Checked out v0.2.10 (rebased branch - a2ec1a77d9dd0ec99f457ddc9ebd767a1eff505d)
    Warning: branches differ on v0.2.10
    Info: Comparing versions (13 / 42)
    Info: Checked out v0.2.11 (original branch - 78ab53fa5a042eb56ece795fb0a6a5b0aceca7a8)
    Info: Checked out v0.2.11 (rebased branch - 71e232a743672d11771cf916245d2e6557bc0b25)
    Warning: branches differ on v0.2.11
    Info: Comparing versions (14 / 42)
    Info: Checked out v0.3.0 (original branch - 25013f809da85bc5c20995397d20d170626bdcc9)
    Info: Checked out v0.3.0 (rebased branch - 6da808b89312c387b5b16260c8ec7596caf3ced2)
    Warning: branches differ on v0.3.0
    Info: Comparing versions (15 / 42)
    Info: Checked out v0.3.1 (original branch - 557b926e3c202616734dc4a9605253c72416231e)
    Info: Checked out v0.3.1 (rebased branch - bde4b545c3ac0f5c414abfa37fca702f17065d49)
    Warning: branches differ on v0.3.1
    Info: Comparing versions (16 / 42)
    Info: Checked out v0.4.0 (original branch - 5221bf49ce227268b2e6868c6055f200c6321d4b)
    Info: Checked out v0.4.0 (rebased branch - 1f574b90f87689b366b57074f687b7ad3d5d0952)
    Warning: branches differ on v0.4.0
    Info: Comparing versions (17 / 42)
    Info: Checked out v0.4.1 (original branch - 56e5668ad8ccdf4df4c3a7183d045772aef8f151)
    Info: Checked out v0.4.1 (rebased branch - 2f087905d725699dbc8c47762f9d173948f82f32)
    Warning: branches differ on v0.4.1
    Info: Comparing versions (18 / 42)
    Info: Checked out v0.5.0 (original branch - 6d27e30d0603683f2927c106646a3690a4939626)
    Info: Checked out v0.5.0 (rebased branch - b92b5fce9495aa3f89ede5fb4db458ba82ea3363)
    Warning: branches differ on v0.5.0
    Info: Comparing versions (19 / 42)
    Info: Checked out v0.5.1 (original branch - 6e659b7601cf107f6716315f52be03827e910599)
    Info: Checked out v0.5.1 (rebased branch - 3633a3dfec2431b9412829b2cf2c0b77833676df)
    Warning: branches differ on v0.5.1
    Info: Comparing versions (20 / 42)
    Info: Checked out v0.5.2 (original branch - 05830063457ae54db000a3158000a8dec3239fe6)
    Info: Checked out v0.5.2 (rebased branch - 48f88e4c29f674a4eaf6820b2e41b2b62edfc291)
    Warning: branches differ on v0.5.2
    Info: Comparing versions (21 / 42)
    Info: Checked out v0.5.3 (original branch - 5bae25abc4ed878269bc8df9b679ccf42e235fd3)
    Info: Checked out v0.5.3 (rebased branch - d065e97422c64e8d009037954d0882b7138ae0f9)
    Warning: branches differ on v0.5.3
    Info: Comparing versions (22 / 42)
    Info: Checked out v0.5.4 (original branch - e9021da46717379615be01eadfc4ccae97422441)
    Info: Checked out v0.5.4 (rebased branch - e4550878998efa3153008c11a45954bb182dda88)
    Warning: branches differ on v0.5.4
    Info: Comparing versions (23 / 42)
    Info: Checked out v0.5.5 (original branch - 953a54cff61ab2dfc560f7adcf304a249aede437)
    Info: Checked out v0.5.5 (rebased branch - 5ac9eb51856eb4e404b40270c2f5ea22cabf6b60)
    Warning: branches differ on v0.5.5
    Info: Comparing versions (24 / 42)
    Info: Checked out v0.5.6 (original branch - 3571f630d2913c76a5eb05e0891b5a3c18c9ad25)
    Info: Checked out v0.5.6 (rebased branch - 1ee6ccf7fdd57397e5bb381a34df7399f1b05bd1)
    Warning: branches differ on v0.5.6
    Info: Comparing versions (25 / 42)
    Info: Checked out v0.5.7 (original branch - d322f9ac6d41fd39f738025cc8f789e28db04e26)
    Info: Checked out v0.5.7 (rebased branch - 2faf1b3cc88e64bb386f145fd386de37b1391a07)
    Warning: branches differ on v0.5.7
    Info: Comparing versions (26 / 42)
    Info: Checked out v0.5.8 (original branch - f1543e8da74309619da6d71b220528e14ff54671)
    Info: Checked out v0.5.8 (rebased branch - 64f64a1ed114ee865b4b046dd81531703946b6ed)
    Warning: branches differ on v0.5.8
    Info: Comparing versions (27 / 42)
    Info: Checked out v0.5.9 (original branch - eaa19c6ed47930f6297692c6d0333d9442b9d336)
    Info: Checked out v0.5.9 (rebased branch - 2ff950c9fbf46813bcb1b5a92e238c6d39eaa357)
    Warning: branches differ on v0.5.9
    Info: Comparing versions (28 / 42)
    Info: Checked out v0.5.10 (original branch - 89fd2602199ad99aec2216611d476b34667cf3d3)
    Info: Checked out v0.5.10 (rebased branch - 99fbb4aebf1ccd7c2d5cdce3ad1218b1d2076567)
    Warning: branches differ on v0.5.10
    Info: Comparing versions (29 / 42)
    Info: Checked out v0.6.0 (original branch - 945cf1693de2bbaff6c3aa17775d4e67d5454239)
    Info: Checked out v0.6.0 (rebased branch - 4d37da76ffa392717e6b9f45a03859fbb7701903)
    Warning: branches differ on v0.6.0
    Info: Comparing versions (30 / 42)
    Info: Checked out v0.6.1 (original branch - f16e763abe006002f7ebf0c295f6bb13a9923a18)
    Info: Checked out v0.6.1 (rebased branch - ad1cfe395dda37134a75a1a82c6b1723e6880c86)
    Warning: branches differ on v0.6.1
    Info: Comparing versions (31 / 42)
    Info: Checked out v0.6.2 (original branch - 2022a73303f6ba467c68d8b2660e64b21912a8cb)
    Info: Checked out v0.6.2 (rebased branch - 90ee8dff4033641115c1ed8ec07e629fb0a40811)
    Warning: branches differ on v0.6.2
    Info: Comparing versions (32 / 42)
    Info: Checked out v0.6.3 (original branch - c86cebcb47b8d3ff1d82dc179215f1d812893ed4)
    Info: Checked out v0.6.3 (rebased branch - a693c8b2ddf187e9d7e25019c0378d972d81c879)
    Warning: branches differ on v0.6.3
    Info: Comparing versions (33 / 42)
    Info: Checked out v0.6.4 (original branch - d634cd5e5a3740eb838fefdc63fa8d0320c62419)
    Info: Checked out v0.6.4 (rebased branch - 8f4ae9ab7fe79c4b1ca847b59ba83777bd250e55)
    Warning: branches differ on v0.6.4
    Info: Comparing versions (34 / 42)
    Info: Checked out v0.6.5 (original branch - ca2b714b409686fedf01426533395408a3f48d39)
    Info: Checked out v0.6.5 (rebased branch - d182f5a5afa9cee1f73faa70b72f40815f64f24d)
    Warning: branches differ on v0.6.5
    Info: Comparing versions (35 / 42)
    Info: Checked out v0.7.0 (original branch - 36e98f7ee9c0ad96fd45d3289a1d2b931f0ae122)
    Info: Checked out v0.7.0 (rebased branch - 92020ae73b360c05c376958462842ed877ae03ce)
    Warning: branches differ on v0.7.0
    Info: Comparing versions (36 / 42)
    Info: Checked out v0.7.1 (original branch - 3d9d4203485ff4e41b0d82527ba14d4a009d39a8)
    Info: Checked out v0.7.1 (rebased branch - fc1a0d9e86b0856ccda3b71a9cad451f69e014ca)
    Warning: branches differ on v0.7.1
    Info: Comparing versions (37 / 42)
    Info: Checked out v0.7.2 (original branch - 495a8727a796871038c1adad5ffa9cab49f791a7)
    Info: Checked out v0.7.2 (rebased branch - e123b0a5acc793be21375aa8e4edb669c8e04872)
    Warning: branches differ on v0.7.2
    Info: Comparing versions (38 / 42)
    Info: Checked out v0.8.0 (original branch - f855592f8f073d749ad62301724b9b4ac22d2aa8)
    Info: Checked out v0.8.0 (rebased branch - 11e94d3aead63b0f8cd3e8be996d2115a335adad)
    Warning: branches differ on v0.8.0
    Info: Comparing versions (39 / 42)
    Info: Checked out v0.8.1 (original branch - e10b4533175aadcc5898afed0a623105a2605435)
    Info: Checked out v0.8.1 (rebased branch - 02ad18ff2ff9a9bb9e6a80dc9e0a0a949ecf9f0a)
    Warning: branches differ on v0.8.1
    Info: Comparing versions (40 / 42)
    Info: Checked out v0.8.2 (original branch - 9d9fa2f6a35aace70c2b1e2f4d59adac72f94463)
    Info: Checked out v0.8.2 (rebased branch - ecea435cd87a357af205bdbcde05b0116f7b2e87)
    Warning: branches differ on v0.8.2
    Info: Comparing versions (41 / 42)
    Info: Checked out v0.8.3 (original branch - 2c5d2994118ac803a87b44f0bd5ce21c5086f50e)
    Info: Checked out v0.8.3 (rebased branch - af5265d2b7914e3bb2ac45aee86b1c7be08c12be)
    Warning: branches differ on v0.8.3
    Info: Comparing versions (42 / 42)
    Info: Checked out v0.8.4 (original branch - ba2af7d4639f8977b10dfde927bf4beaf727f9d4)
    Info: Checked out v0.8.4 (rebased branch - 59a8052125450faf21e26f48f036d97f1037f1a3)
    Warning: branches differ on v0.8.4
    
    diff output
    cat diffs/v0.1.0.diff
    diff -r -x .git -x .idea -x target -x Cargo.lock ./barter-rs-orig/Cargo.toml ./barter-rs-rebased/Cargo.toml
    4c4
    < authors = ["{author-redacted} <{email-redacted}>"]
    ---
    > authors = ["Just A Stream <[email protected]>"]
    cat diffs/v0.2.0.diff
    diff -r -x .git -x .idea -x target -x Cargo.lock ./barter-rs-orig/Cargo.toml ./barter-rs-rebased/Cargo.toml
    4c4
    < authors = ["{author-redacted} <{email-redacted}>"]
    ---
    > authors = ["Just A Stream <[email protected]>"]
    cat diffs/v0.2.1.diff
    diff -r -x .git -x .idea -x target -x Cargo.lock ./barter-rs-orig/Cargo.toml ./barter-rs-rebased/Cargo.toml
    4c4
    < authors = ["{author-redacted} <{email-redacted}>"]
    ---
    > authors = ["Just A Stream <[email protected]>"]
    cat diffs/v0.2.10.diff
    diff -r -x .git -x .idea -x target -x Cargo.lock ./barter-rs-orig/Cargo.toml ./barter-rs-rebased/Cargo.toml
    4c4
    < authors = ["{author-redacted} <{email-redacted}>"]
    ---
    > authors = ["Just A Stream <[email protected]>"]
    cat diffs/v0.2.11.diff
    diff -r -x .git -x .idea -x target -x Cargo.lock ./barter-rs-orig/Cargo.toml ./barter-rs-rebased/Cargo.toml
    4c4
    < authors = ["{author-redacted} <{email-redacted}>"]
    ---
    > authors = ["Just A Stream <[email protected]>"]
    cat diffs/v0.2.2.diff
    diff -r -x .git -x .idea -x target -x Cargo.lock ./barter-rs-orig/Cargo.toml ./barter-rs-rebased/Cargo.toml
    4c4
    < authors = ["{author-redacted} <{email-redacted}>"]
    ---
    > authors = ["Just A Stream <[email protected]>"]
    cat diffs/v0.2.3.diff
    diff -r -x .git -x .idea -x target -x Cargo.lock ./barter-rs-orig/Cargo.toml ./barter-rs-rebased/Cargo.toml
    4c4
    < authors = ["{author-redacted} <{email-redacted}>"]
    ---
    > authors = ["Just A Stream <[email protected]>"]
    cat diffs/v0.2.4.diff
    diff -r -x .git -x .idea -x target -x Cargo.lock ./barter-rs-orig/Cargo.toml ./barter-rs-rebased/Cargo.toml
    4c4
    < authors = ["{author-redacted} <{email-redacted}>"]
    ---
    > authors = ["Just A Stream <[email protected]>"]
    cat diffs/v0.2.5.diff
    diff -r -x .git -x .idea -x target -x Cargo.lock ./barter-rs-orig/Cargo.toml ./barter-rs-rebased/Cargo.toml
    4c4
    < authors = ["{author-redacted} <{email-redacted}>"]
    ---
    > authors = ["Just A Stream <[email protected]>"]
    cat diffs/v0.2.6.diff
    diff -r -x .git -x .idea -x target -x Cargo.lock ./barter-rs-orig/Cargo.toml ./barter-rs-rebased/Cargo.toml
    4c4
    < authors = ["{author-redacted} <{email-redacted}>"]
    ---
    > authors = ["Just A Stream <[email protected]>"]
    cat diffs/v0.2.7.diff
    diff -r -x .git -x .idea -x target -x Cargo.lock ./barter-rs-orig/Cargo.toml ./barter-rs-rebased/Cargo.toml
    4c4
    < authors = ["{author-redacted} <{email-redacted}>"]
    ---
    > authors = ["Just A Stream <[email protected]>"]
    cat diffs/v0.2.8.diff
    diff -r -x .git -x .idea -x target -x Cargo.lock ./barter-rs-orig/Cargo.toml ./barter-rs-rebased/Cargo.toml
    4c4
    < authors = ["{author-redacted} <{email-redacted}>"]
    ---
    > authors = ["Just A Stream <[email protected]>"]
    cat diffs/v0.2.9.diff
    diff -r -x .git -x .idea -x target -x Cargo.lock ./barter-rs-orig/Cargo.toml ./barter-rs-rebased/Cargo.toml
    4c4
    < authors = ["{author-redacted} <{email-redacted}>"]
    ---
    > authors = ["Just A Stream <[email protected]>"]
    cat diffs/v0.3.0.diff
    diff -r -x .git -x .idea -x target -x Cargo.lock ./barter-rs-orig/Cargo.toml ./barter-rs-rebased/Cargo.toml
    4c4
    < authors = ["{author-redacted} <{email-redacted}>"]
    ---
    > authors = ["Just A Stream <[email protected]>"]
    cat diffs/v0.3.1.diff
    diff -r -x .git -x .idea -x target -x Cargo.lock ./barter-rs-orig/Cargo.toml ./barter-rs-rebased/Cargo.toml
    4c4
    < authors = ["{author-redacted} <{email-redacted}>"]
    ---
    > authors = ["Just A Stream <[email protected]>"]
    cat diffs/v0.4.0.diff
    diff -r -x .git -x .idea -x target -x Cargo.lock ./barter-rs-orig/Cargo.toml ./barter-rs-rebased/Cargo.toml
    4c4
    < authors = ["{author-redacted} <{email-redacted}>"]
    ---
    > authors = ["Just A Stream <[email protected]>"]
    cat diffs/v0.4.1.diff
    diff -r -x .git -x .idea -x target -x Cargo.lock ./barter-rs-orig/Cargo.toml ./barter-rs-rebased/Cargo.toml
    4c4
    < authors = ["{author-redacted} <{email-redacted}>"]
    ---
    > authors = ["Just A Stream <[email protected]>"]
    cat diffs/v0.5.0.diff
    diff -r -x .git -x .idea -x target -x Cargo.lock ./barter-rs-orig/Cargo.toml ./barter-rs-rebased/Cargo.toml
    4c4
    < authors = ["{author-redacted} <{email-redacted}>"]
    ---
    > authors = ["Just A Stream <[email protected]>"]
    cat diffs/v0.5.1.diff
    diff -r -x .git -x .idea -x target -x Cargo.lock ./barter-rs-orig/Cargo.toml ./barter-rs-rebased/Cargo.toml
    4c4
    < authors = ["{author-redacted} <{email-redacted}>"]
    ---
    > authors = ["Just A Stream <[email protected]>"]
    cat diffs/v0.5.10.diff
    diff -r -x .git -x .idea -x target -x Cargo.lock ./barter-rs-orig/Cargo.toml ./barter-rs-rebased/Cargo.toml
    4c4
    < authors = ["{author-redacted} <{email-redacted}>"]
    ---
    > authors = ["Just A Stream <[email protected]>"]
    cat diffs/v0.5.2.diff
    diff -r -x .git -x .idea -x target -x Cargo.lock ./barter-rs-orig/Cargo.toml ./barter-rs-rebased/Cargo.toml
    4c4
    < authors = ["{author-redacted} <{email-redacted}>"]
    ---
    > authors = ["Just A Stream <[email protected]>"]
    cat diffs/v0.5.3.diff
    diff -r -x .git -x .idea -x target -x Cargo.lock ./barter-rs-orig/Cargo.toml ./barter-rs-rebased/Cargo.toml
    4c4
    < authors = ["{author-redacted} <{email-redacted}>"]
    ---
    > authors = ["Just A Stream <[email protected]>"]
    cat diffs/v0.5.4.diff
    diff -r -x .git -x .idea -x target -x Cargo.lock ./barter-rs-orig/Cargo.toml ./barter-rs-rebased/Cargo.toml
    4c4
    < authors = ["{author-redacted} <{email-redacted}>"]
    ---
    > authors = ["Just A Stream <[email protected]>"]
    cat diffs/v0.5.5.diff
    diff -r -x .git -x .idea -x target -x Cargo.lock ./barter-rs-orig/Cargo.toml ./barter-rs-rebased/Cargo.toml
    4c4
    < authors = ["{author-redacted} <{email-redacted}>"]
    ---
    > authors = ["Just A Stream <[email protected]>"]
    cat diffs/v0.5.6.diff
    diff -r -x .git -x .idea -x target -x Cargo.lock ./barter-rs-orig/Cargo.toml ./barter-rs-rebased/Cargo.toml
    4c4
    < authors = ["{author-redacted} <{email-redacted}>"]
    ---
    > authors = ["Just A Stream <[email protected]>"]
    cat diffs/v0.5.7.diff
    diff -r -x .git -x .idea -x target -x Cargo.lock ./barter-rs-orig/Cargo.toml ./barter-rs-rebased/Cargo.toml
    4c4
    < authors = ["{author-redacted} <{email-redacted}>"]
    ---
    > authors = ["Just A Stream <[email protected]>"]
    cat diffs/v0.5.8.diff
    diff -r -x .git -x .idea -x target -x Cargo.lock ./barter-rs-orig/Cargo.toml ./barter-rs-rebased/Cargo.toml
    4c4
    < authors = ["{author-redacted} <{email-redacted}>"]
    ---
    > authors = ["Just A Stream <[email protected]>"]
    cat diffs/v0.5.9.diff
    diff -r -x .git -x .idea -x target -x Cargo.lock ./barter-rs-orig/Cargo.toml ./barter-rs-rebased/Cargo.toml
    4c4
    < authors = ["{author-redacted} <{email-redacted}>"]
    ---
    > authors = ["Just A Stream <[email protected]>"]
    cat diffs/v0.6.0.diff
    diff -r -x .git -x .idea -x target -x Cargo.lock ./barter-rs-orig/Cargo.toml ./barter-rs-rebased/Cargo.toml
    4c4
    < authors = ["{author-redacted} <{email-redacted}>"]
    ---
    > authors = ["Just A Stream <[email protected]>"]
    cat diffs/v0.6.1.diff
    diff -r -x .git -x .idea -x target -x Cargo.lock ./barter-rs-orig/Cargo.toml ./barter-rs-rebased/Cargo.toml
    4c4
    < authors = ["{author-redacted} <{email-redacted}>"]
    ---
    > authors = ["Just A Stream <[email protected]>"]
    cat diffs/v0.6.2.diff
    diff -r -x .git -x .idea -x target -x Cargo.lock ./barter-rs-orig/Cargo.toml ./barter-rs-rebased/Cargo.toml
    4c4
    < authors = ["{author-redacted} <{email-redacted}>"]
    ---
    > authors = ["Just A Stream <[email protected]>"]
    cat diffs/v0.6.3.diff
    diff -r -x .git -x .idea -x target -x Cargo.lock ./barter-rs-orig/Cargo.toml ./barter-rs-rebased/Cargo.toml
    4c4
    < authors = ["{author-redacted} <{email-redacted}>"]
    ---
    > authors = ["Just A Stream <[email protected]>"]
    cat diffs/v0.6.4.diff
    diff -r -x .git -x .idea -x target -x Cargo.lock ./barter-rs-orig/Cargo.toml ./barter-rs-rebased/Cargo.toml
    4c4
    < authors = ["{author-redacted} <{email-redacted}>"]
    ---
    > authors = ["Just A Stream <[email protected]>"]
    cat diffs/v0.6.5.diff
    diff -r -x .git -x .idea -x target -x Cargo.lock ./barter-rs-orig/Cargo.toml ./barter-rs-rebased/Cargo.toml
    4c4
    < authors = ["{author-redacted} <{email-redacted}>"]
    ---
    > authors = ["Just A Stream <[email protected]>"]
    cat diffs/v0.7.0.diff
    diff -r -x .git -x .idea -x target -x Cargo.lock ./barter-rs-orig/Cargo.toml ./barter-rs-rebased/Cargo.toml
    4c4
    < authors = ["{author-redacted} <{email-redacted}>"]
    ---
    > authors = ["Just A Stream <[email protected]>"]
    cat diffs/v0.7.1.diff
    diff -r -x .git -x .idea -x target -x Cargo.lock ./barter-rs-orig/Cargo.toml ./barter-rs-rebased/Cargo.toml
    4c4
    < authors = ["{author-redacted} <{email-redacted}>"]
    ---
    > authors = ["Just A Stream <[email protected]>"]
    cat diffs/v0.7.2.diff
    diff -r -x .git -x .idea -x target -x Cargo.lock ./barter-rs-orig/Cargo.toml ./barter-rs-rebased/Cargo.toml
    4c4
    < authors = ["{author-redacted} <{email-redacted}>"]
    ---
    > authors = ["Just A Stream <[email protected]>"]
    cat diffs/v0.8.0.diff
    diff -r -x .git -x .idea -x target -x Cargo.lock ./barter-rs-orig/Cargo.toml ./barter-rs-rebased/Cargo.toml
    4c4
    < authors = ["{author-redacted} <{email-redacted}>"]
    ---
    > authors = ["Just A Stream <[email protected]>"]
    cat diffs/v0.8.1.diff
    diff -r -x .git -x .idea -x target -x Cargo.lock ./barter-rs-orig/Cargo.toml ./barter-rs-rebased/Cargo.toml
    4c4
    < authors = ["{author-redacted} <{email-redacted}>"]
    ---
    > authors = ["Just A Stream <[email protected]>"]
    cat diffs/v0.8.2.diff
    diff -r -x .git -x .idea -x target -x Cargo.lock ./barter-rs-orig/Cargo.toml ./barter-rs-rebased/Cargo.toml
    4c4
    < authors = ["{author-redacted} <{email-redacted}>"]
    ---
    > authors = ["Just A Stream <[email protected]>"]
    cat diffs/v0.8.3.diff
    diff -r -x .git -x .idea -x target -x Cargo.lock ./barter-rs-orig/Cargo.toml ./barter-rs-rebased/Cargo.toml
    4c4
    < authors = ["{author-redacted} <{email-redacted}>"]
    ---
    > authors = ["Just A Stream <[email protected]>"]
    cat diffs/v0.8.4.diff
    diff -r -x .git -x .idea -x target -x Cargo.lock ./barter-rs-orig/Cargo.toml ./barter-rs-rebased/Cargo.toml
    4c4
    < authors = ["{author-redacted} <{email-redacted}>"]
    ---
    > authors = ["Just A Stream <[email protected]>"]
    

    Migration (merging issues)

    (see #5 & #6 Migration section)

    Still no problems merging / rebasing anything.

    pr::chore 
    opened by carpetmaker 2
  • examples/engine_with_historic_candles.rs breaks

    examples/engine_with_historic_candles.rs breaks

    File path issue

    Tried run examples with the following command

    cd barter-rs # Same level as barter-rs/Cargo.toml
    cargo run --example engine_with_historic_candles
    

    rust complains the data file candles_1h.json can not be found

    Running target/debug/examples/engine_with_historic_candles thread 'main' panicked at 'failed to read file: Os { code: 2, kind: NotFound, message: "No such file or directory" }', examples/engine_with_historic_candles.rs:116:71

    I guess this is because the path of the data file lives in barter-rs/examples/data/candles_1h.json, while the current working directory is barter-rs. The line causing trouble is in engine_with_historic_candles.rs line 116: let candles = fs::read_to_string("barter-rs/examples/data/candles_1h.json").expect("failed to read file"); When I changed the path to fs::read_to_string("examples/data/candles_1h.json"), The error can be fixed.

    I am not sure if this is a bug, or I am in the wrong directory? What is the expected working directory for a new user to run the example with cargo run --example engine_with_historic_candles?

    Data out of sync

    The example requires the example has a field close_time:

        candles
            .into_iter()
            .map(|candle| MarketEvent {
                exchange_time: candle.close_time,
                received_time: Utc::now(),
                exchange: Exchange::from("binance"),
                ......
    

    But the example data in candles_1h.json only has start_time and end_time, but no close_time:

      {
        "start_time": "2022-04-05 20:00:00.000000000 UTC",
        "end_time": "2022-04-05 21:00:00.000000000 UTC",
        "open": 1000.0,
        "high": 1100.0,
        "low": 900.0,
        "close": 1050.0,
        "volume": 1000000000.0,
        "trade_count": 100
      },
    

    resulting in this error:

    Running target/debug/examples/engine_with_historic_candles thread 'main' panicked at 'failed to parse candles String: Error("missing field close_time", line: 11, column: 3)', examples/engine_with_historic_candles.rs:119:55

    This can also be fixed by replacing all the end_time fields with close_time in candles_1h.json. But I am not sure whether the start_time and end_time fileds are still valid fields to keep.

    opened by HereticSK 1
  • Rewrite project history (minimal changes)

    Rewrite project history (minimal changes)

    Rewrite project history (minimal changes)

    Description

    Re-submission of #7

    Verification

    (see Verification section of #7, #6 & #5)

    Verification process output log
    Info: Comparing versions (1 / 42)
    Info: Checked out v0.1.0 (original branch - 0d1467cc5a1b8318a3d2b4d941b1b8a38bd233a7)
    Info: Checked out v0.1.0 (rebased branch - d390d6abd7ef28d248977e771419d46ca22095de)
    Warning: branches differ on v0.1.0
    Info: Comparing versions (2 / 42)
    Info: Checked out v0.2.0 (original branch - 5dba365d1fd53630c7aa82943d3faa12aa27f835)
    Info: Checked out v0.2.0 (rebased branch - ef76125e68a020236f21ebad01052859300d4d8b)
    Warning: branches differ on v0.2.0
    Info: Comparing versions (3 / 42)
    Info: Checked out v0.2.1 (original branch - 1ff46f09f4db8003c816432c16e718e59e00fdd7)
    Info: Checked out v0.2.1 (rebased branch - 2d7e70edab5cae975b7194e1dc5019183b57f6d6)
    Warning: branches differ on v0.2.1
    Info: Comparing versions (4 / 42)
    Info: Checked out v0.2.2 (original branch - 68d96309bff2a7fc367dd51b0d5120dc09fc46c6)
    Info: Checked out v0.2.2 (rebased branch - 0a4c9d80ed780482e9ee2db7c04dbfbe156d2d06)
    Warning: branches differ on v0.2.2
    Info: Comparing versions (5 / 42)
    Info: Checked out v0.2.3 (original branch - fd85e3d47348e6c772116e368eca253075ea6c00)
    Info: Checked out v0.2.3 (rebased branch - 7efdfd6f6721ba7fcc8a5f35f32857da1667b6fe)
    Warning: branches differ on v0.2.3
    Info: Comparing versions (6 / 42)
    Info: Checked out v0.2.4 (original branch - ef717c03418840dedfdfc2d95edf950f67ec9e6a)
    Info: Checked out v0.2.4 (rebased branch - 993dbf4728e7f218a47a7a7de534b71054804fed)
    Warning: branches differ on v0.2.4
    Info: Comparing versions (7 / 42)
    Info: Checked out v0.2.5 (original branch - 57ec50a8551455c5102b2082a56f89676ffd9be6)
    Info: Checked out v0.2.5 (rebased branch - 5e4fe118c0abe6a530c6aaeafd0299175559c6c5)
    Warning: branches differ on v0.2.5
    Info: Comparing versions (8 / 42)
    Info: Checked out v0.2.6 (original branch - 64de2b24a7c11391683c6265ffcb1e00e9a88aec)
    Info: Checked out v0.2.6 (rebased branch - 83cf5fcc715f68b5160de189d20e3c0f7bdabeb2)
    Warning: branches differ on v0.2.6
    Info: Comparing versions (9 / 42)
    Info: Checked out v0.2.7 (original branch - 830c6c17e611107b53e49cdac44da99bade4687f)
    Info: Checked out v0.2.7 (rebased branch - 9747e5fd694fac191558cb932acf3a57a92e46a4)
    Warning: branches differ on v0.2.7
    Info: Comparing versions (10 / 42)
    Info: Checked out v0.2.8 (original branch - 430a33b9df0052b24bd170a0f291847035ddbd1c)
    Info: Checked out v0.2.8 (rebased branch - 0adb3991b95f2b38dda7b025047a4abd46000b45)
    Warning: branches differ on v0.2.8
    Info: Comparing versions (11 / 42)
    Info: Checked out v0.2.9 (original branch - 204b8f5ca50c260c41a1c1f7f6cdedfcd7f64dfd)
    Info: Checked out v0.2.9 (rebased branch - 0d18f0f2f54b98270c73a062e3530bc34521931e)
    Warning: branches differ on v0.2.9
    Info: Comparing versions (12 / 42)
    Info: Checked out v0.2.10 (original branch - 22e0d1d765c64c172377b340716910fda1c4aa37)
    Info: Checked out v0.2.10 (rebased branch - 1ceb7d9f634531e59bf3a171ac50b68fa256928e)
    Warning: branches differ on v0.2.10
    Info: Comparing versions (13 / 42)
    Info: Checked out v0.2.11 (original branch - 78ab53fa5a042eb56ece795fb0a6a5b0aceca7a8)
    Info: Checked out v0.2.11 (rebased branch - 130560c31f3bf23f0e9c929986e1833944a533f3)
    Warning: branches differ on v0.2.11
    Info: Comparing versions (14 / 42)
    Info: Checked out v0.3.0 (original branch - 25013f809da85bc5c20995397d20d170626bdcc9)
    Info: Checked out v0.3.0 (rebased branch - c007ae622e04d8c6fa4cc3480317016c1ba9bc0f)
    Warning: branches differ on v0.3.0
    Info: Comparing versions (15 / 42)
    Info: Checked out v0.3.1 (original branch - 557b926e3c202616734dc4a9605253c72416231e)
    Info: Checked out v0.3.1 (rebased branch - 6724f07014a463c4f6d6c99f48d5701213861369)
    Warning: branches differ on v0.3.1
    Info: Comparing versions (16 / 42)
    Info: Checked out v0.4.0 (original branch - 5221bf49ce227268b2e6868c6055f200c6321d4b)
    Info: Checked out v0.4.0 (rebased branch - 02757e57901dcdd5f8ca951fcddb7ed68aa4c245)
    Warning: branches differ on v0.4.0
    Info: Comparing versions (17 / 42)
    Info: Checked out v0.4.1 (original branch - 56e5668ad8ccdf4df4c3a7183d045772aef8f151)
    Info: Checked out v0.4.1 (rebased branch - b01ab8e45fa785c43940ff4a53547178b72dca75)
    Warning: branches differ on v0.4.1
    Info: Comparing versions (18 / 42)
    Info: Checked out v0.5.0 (original branch - 6d27e30d0603683f2927c106646a3690a4939626)
    Info: Checked out v0.5.0 (rebased branch - b67705fd5eb60aeb5f50e88c37b45e7d671572ce)
    Warning: branches differ on v0.5.0
    Info: Comparing versions (19 / 42)
    Info: Checked out v0.5.1 (original branch - 6e659b7601cf107f6716315f52be03827e910599)
    Info: Checked out v0.5.1 (rebased branch - 368a8b652e3e3c48f3b5210ecf4eb30c6e7b5c53)
    Warning: branches differ on v0.5.1
    Info: Comparing versions (20 / 42)
    Info: Checked out v0.5.2 (original branch - 05830063457ae54db000a3158000a8dec3239fe6)
    Info: Checked out v0.5.2 (rebased branch - d1a168518d2b73a9f985ce78a8a14442b902efba)
    Warning: branches differ on v0.5.2
    Info: Comparing versions (21 / 42)
    Info: Checked out v0.5.3 (original branch - 5bae25abc4ed878269bc8df9b679ccf42e235fd3)
    Info: Checked out v0.5.3 (rebased branch - f378172544a6c6407f70bc1bf55e0525f8389a1c)
    Warning: branches differ on v0.5.3
    Info: Comparing versions (22 / 42)
    Info: Checked out v0.5.4 (original branch - e9021da46717379615be01eadfc4ccae97422441)
    Info: Checked out v0.5.4 (rebased branch - bfc1d282a713b1a47f90197babdb0ca312872493)
    Warning: branches differ on v0.5.4
    Info: Comparing versions (23 / 42)
    Info: Checked out v0.5.5 (original branch - 953a54cff61ab2dfc560f7adcf304a249aede437)
    Info: Checked out v0.5.5 (rebased branch - f7288ea448f9c24f30ec5c5cfccd7db89b854b38)
    Warning: branches differ on v0.5.5
    Info: Comparing versions (24 / 42)
    Info: Checked out v0.5.6 (original branch - 3571f630d2913c76a5eb05e0891b5a3c18c9ad25)
    Info: Checked out v0.5.6 (rebased branch - 3100901a849aededd7633db62307700f97d37ebb)
    Warning: branches differ on v0.5.6
    Info: Comparing versions (25 / 42)
    Info: Checked out v0.5.7 (original branch - d322f9ac6d41fd39f738025cc8f789e28db04e26)
    Info: Checked out v0.5.7 (rebased branch - 85eb7de026abd23997f7e3cc83fa7699eb05f909)
    Warning: branches differ on v0.5.7
    Info: Comparing versions (26 / 42)
    Info: Checked out v0.5.8 (original branch - f1543e8da74309619da6d71b220528e14ff54671)
    Info: Checked out v0.5.8 (rebased branch - 122decc744e9f3608b89ee617bf4824265a41ab4)
    Warning: branches differ on v0.5.8
    Info: Comparing versions (27 / 42)
    Info: Checked out v0.5.9 (original branch - eaa19c6ed47930f6297692c6d0333d9442b9d336)
    Info: Checked out v0.5.9 (rebased branch - 32c1a6c26bd7cdc300932ce4bda155aee875a37c)
    Warning: branches differ on v0.5.9
    Info: Comparing versions (28 / 42)
    Info: Checked out v0.5.10 (original branch - 89fd2602199ad99aec2216611d476b34667cf3d3)
    Info: Checked out v0.5.10 (rebased branch - 82070228ba3b5ed9b620106ce07038d5aef4a29a)
    Warning: branches differ on v0.5.10
    Info: Comparing versions (29 / 42)
    Info: Checked out v0.6.0 (original branch - 945cf1693de2bbaff6c3aa17775d4e67d5454239)
    Info: Checked out v0.6.0 (rebased branch - 7cca70fabf2bd3afc2a045c2dc22b6205d0abb71)
    Warning: branches differ on v0.6.0
    Info: Comparing versions (30 / 42)
    Info: Checked out v0.6.1 (original branch - f16e763abe006002f7ebf0c295f6bb13a9923a18)
    Info: Checked out v0.6.1 (rebased branch - 4d7bc986a581063dda398b2c00945fa7a5ed4bd6)
    Warning: branches differ on v0.6.1
    Info: Comparing versions (31 / 42)
    Info: Checked out v0.6.2 (original branch - 2022a73303f6ba467c68d8b2660e64b21912a8cb)
    Info: Checked out v0.6.2 (rebased branch - af9245c7f758d085ac7362b3bec05bac18904a3a)
    Warning: branches differ on v0.6.2
    Info: Comparing versions (32 / 42)
    Info: Checked out v0.6.3 (original branch - c86cebcb47b8d3ff1d82dc179215f1d812893ed4)
    Info: Checked out v0.6.3 (rebased branch - 40f66088426ec7874f3a805ed2eb2035ec17159a)
    Warning: branches differ on v0.6.3
    Info: Comparing versions (33 / 42)
    Info: Checked out v0.6.4 (original branch - d634cd5e5a3740eb838fefdc63fa8d0320c62419)
    Info: Checked out v0.6.4 (rebased branch - bc701d74518f9907a212caf4befff2d23125cbda)
    Warning: branches differ on v0.6.4
    Info: Comparing versions (34 / 42)
    Info: Checked out v0.6.5 (original branch - ca2b714b409686fedf01426533395408a3f48d39)
    Info: Checked out v0.6.5 (rebased branch - 7e29998371705b89c77c1e1f2044343316028696)
    Warning: branches differ on v0.6.5
    Info: Comparing versions (35 / 42)
    Info: Checked out v0.7.0 (original branch - 36e98f7ee9c0ad96fd45d3289a1d2b931f0ae122)
    Info: Checked out v0.7.0 (rebased branch - 905e6d6bafbcddb12377b2a1c356dbbb8f993ef9)
    Warning: branches differ on v0.7.0
    Info: Comparing versions (36 / 42)
    Info: Checked out v0.7.1 (original branch - 3d9d4203485ff4e41b0d82527ba14d4a009d39a8)
    Info: Checked out v0.7.1 (rebased branch - a5ae8aa48ff082793ba74fefb5bbcaf57276a502)
    Warning: branches differ on v0.7.1
    Info: Comparing versions (37 / 42)
    Info: Checked out v0.7.2 (original branch - 495a8727a796871038c1adad5ffa9cab49f791a7)
    Info: Checked out v0.7.2 (rebased branch - 75efafa07b03504d6a159b9f5937a49c3ce79997)
    Warning: branches differ on v0.7.2
    Info: Comparing versions (38 / 42)
    Info: Checked out v0.8.0 (original branch - f855592f8f073d749ad62301724b9b4ac22d2aa8)
    Info: Checked out v0.8.0 (rebased branch - 50fa6735a34c669565f16e1cc20b3b701dedc960)
    Warning: branches differ on v0.8.0
    Info: Comparing versions (39 / 42)
    Info: Checked out v0.8.1 (original branch - e10b4533175aadcc5898afed0a623105a2605435)
    Info: Checked out v0.8.1 (rebased branch - 16e5bbcb9ba297bfa7d0b08483efd97107a81993)
    Warning: branches differ on v0.8.1
    Info: Comparing versions (40 / 42)
    Info: Checked out v0.8.2 (original branch - 9d9fa2f6a35aace70c2b1e2f4d59adac72f94463)
    Info: Checked out v0.8.2 (rebased branch - 7c3bf080b62ae90e129de71e2076d41c7db9eedd)
    Warning: branches differ on v0.8.2
    Info: Comparing versions (41 / 42)
    Info: Checked out v0.8.3 (original branch - 2c5d2994118ac803a87b44f0bd5ce21c5086f50e)
    Info: Checked out v0.8.3 (rebased branch - 9b765961f2cc5b3d6015bdcf2843a01b1d18b358)
    Warning: branches differ on v0.8.3
    Info: Comparing versions (42 / 42)
    Info: Checked out v0.8.4 (original branch - ba2af7d4639f8977b10dfde927bf4beaf727f9d4)
    Info: Checked out v0.8.4 (rebased branch - 2fb80a60e416c5037d95a4dbce66d3a37cde9f62)
    Warning: branches differ on v0.8.4
    
    diff output
    cat diffs/v0.1.0.diff
    diff -r -x .git -x .idea -x target -x Cargo.lock ./barter-rs-orig/Cargo.toml ./barter-rs-rebased/Cargo.toml
    4c4
    < authors = ["{author name redacted} <{author email redacted}>"]
    ---
    > authors = ["Just A Stream <[email protected]>"]
    cat diffs/v0.2.0.diff
    diff -r -x .git -x .idea -x target -x Cargo.lock ./barter-rs-orig/Cargo.toml ./barter-rs-rebased/Cargo.toml
    4c4
    < authors = ["{author name redacted} <{author email redacted}>"]
    ---
    > authors = ["Just A Stream <[email protected]>"]
    cat diffs/v0.2.1.diff
    diff -r -x .git -x .idea -x target -x Cargo.lock ./barter-rs-orig/Cargo.toml ./barter-rs-rebased/Cargo.toml
    4c4
    < authors = ["{author name redacted} <{author email redacted}>"]
    ---
    > authors = ["Just A Stream <[email protected]>"]
    cat diffs/v0.2.10.diff
    diff -r -x .git -x .idea -x target -x Cargo.lock ./barter-rs-orig/Cargo.toml ./barter-rs-rebased/Cargo.toml
    4c4
    < authors = ["{author name redacted} <{author email redacted}>"]
    ---
    > authors = ["Just A Stream <[email protected]>"]
    cat diffs/v0.2.11.diff
    diff -r -x .git -x .idea -x target -x Cargo.lock ./barter-rs-orig/Cargo.toml ./barter-rs-rebased/Cargo.toml
    4c4
    < authors = ["{author name redacted} <{author email redacted}>"]
    ---
    > authors = ["Just A Stream <[email protected]>"]
    cat diffs/v0.2.2.diff
    diff -r -x .git -x .idea -x target -x Cargo.lock ./barter-rs-orig/Cargo.toml ./barter-rs-rebased/Cargo.toml
    4c4
    < authors = ["{author name redacted} <{author email redacted}>"]
    ---
    > authors = ["Just A Stream <[email protected]>"]
    cat diffs/v0.2.3.diff
    diff -r -x .git -x .idea -x target -x Cargo.lock ./barter-rs-orig/Cargo.toml ./barter-rs-rebased/Cargo.toml
    4c4
    < authors = ["{author name redacted} <{author email redacted}>"]
    ---
    > authors = ["Just A Stream <[email protected]>"]
    cat diffs/v0.2.4.diff
    diff -r -x .git -x .idea -x target -x Cargo.lock ./barter-rs-orig/Cargo.toml ./barter-rs-rebased/Cargo.toml
    4c4
    < authors = ["{author name redacted} <{author email redacted}>"]
    ---
    > authors = ["Just A Stream <[email protected]>"]
    cat diffs/v0.2.5.diff
    diff -r -x .git -x .idea -x target -x Cargo.lock ./barter-rs-orig/Cargo.toml ./barter-rs-rebased/Cargo.toml
    4c4
    < authors = ["{author name redacted} <{author email redacted}>"]
    ---
    > authors = ["Just A Stream <[email protected]>"]
    cat diffs/v0.2.6.diff
    diff -r -x .git -x .idea -x target -x Cargo.lock ./barter-rs-orig/Cargo.toml ./barter-rs-rebased/Cargo.toml
    4c4
    < authors = ["{author name redacted} <{author email redacted}>"]
    ---
    > authors = ["Just A Stream <[email protected]>"]
    cat diffs/v0.2.7.diff
    diff -r -x .git -x .idea -x target -x Cargo.lock ./barter-rs-orig/Cargo.toml ./barter-rs-rebased/Cargo.toml
    4c4
    < authors = ["{author name redacted} <{author email redacted}>"]
    ---
    > authors = ["Just A Stream <[email protected]>"]
    cat diffs/v0.2.8.diff
    diff -r -x .git -x .idea -x target -x Cargo.lock ./barter-rs-orig/Cargo.toml ./barter-rs-rebased/Cargo.toml
    4c4
    < authors = ["{author name redacted} <{author email redacted}>"]
    ---
    > authors = ["Just A Stream <[email protected]>"]
    cat diffs/v0.2.9.diff
    diff -r -x .git -x .idea -x target -x Cargo.lock ./barter-rs-orig/Cargo.toml ./barter-rs-rebased/Cargo.toml
    4c4
    < authors = ["{author name redacted} <{author email redacted}>"]
    ---
    > authors = ["Just A Stream <[email protected]>"]
    cat diffs/v0.3.0.diff
    diff -r -x .git -x .idea -x target -x Cargo.lock ./barter-rs-orig/Cargo.toml ./barter-rs-rebased/Cargo.toml
    4c4
    < authors = ["{author name redacted} <{author email redacted}>"]
    ---
    > authors = ["Just A Stream <[email protected]>"]
    cat diffs/v0.3.1.diff
    diff -r -x .git -x .idea -x target -x Cargo.lock ./barter-rs-orig/Cargo.toml ./barter-rs-rebased/Cargo.toml
    4c4
    < authors = ["{author name redacted} <{author email redacted}>"]
    ---
    > authors = ["Just A Stream <[email protected]>"]
    cat diffs/v0.4.0.diff
    diff -r -x .git -x .idea -x target -x Cargo.lock ./barter-rs-orig/Cargo.toml ./barter-rs-rebased/Cargo.toml
    4c4
    < authors = ["{author name redacted} <{author email redacted}>"]
    ---
    > authors = ["Just A Stream <[email protected]>"]
    cat diffs/v0.4.1.diff
    diff -r -x .git -x .idea -x target -x Cargo.lock ./barter-rs-orig/Cargo.toml ./barter-rs-rebased/Cargo.toml
    4c4
    < authors = ["{author name redacted} <{author email redacted}>"]
    ---
    > authors = ["Just A Stream <[email protected]>"]
    cat diffs/v0.5.0.diff
    diff -r -x .git -x .idea -x target -x Cargo.lock ./barter-rs-orig/Cargo.toml ./barter-rs-rebased/Cargo.toml
    4c4
    < authors = ["{author name redacted} <{author email redacted}>"]
    ---
    > authors = ["Just A Stream <[email protected]>"]
    cat diffs/v0.5.1.diff
    diff -r -x .git -x .idea -x target -x Cargo.lock ./barter-rs-orig/Cargo.toml ./barter-rs-rebased/Cargo.toml
    4c4
    < authors = ["{author name redacted} <{author email redacted}>"]
    ---
    > authors = ["Just A Stream <[email protected]>"]
    cat diffs/v0.5.10.diff
    diff -r -x .git -x .idea -x target -x Cargo.lock ./barter-rs-orig/Cargo.toml ./barter-rs-rebased/Cargo.toml
    4c4
    < authors = ["{author name redacted} <{author email redacted}>"]
    ---
    > authors = ["Just A Stream <[email protected]>"]
    cat diffs/v0.5.2.diff
    diff -r -x .git -x .idea -x target -x Cargo.lock ./barter-rs-orig/Cargo.toml ./barter-rs-rebased/Cargo.toml
    4c4
    < authors = ["{author name redacted} <{author email redacted}>"]
    ---
    > authors = ["Just A Stream <[email protected]>"]
    cat diffs/v0.5.3.diff
    diff -r -x .git -x .idea -x target -x Cargo.lock ./barter-rs-orig/Cargo.toml ./barter-rs-rebased/Cargo.toml
    4c4
    < authors = ["{author name redacted} <{author email redacted}>"]
    ---
    > authors = ["Just A Stream <[email protected]>"]
    cat diffs/v0.5.4.diff
    diff -r -x .git -x .idea -x target -x Cargo.lock ./barter-rs-orig/Cargo.toml ./barter-rs-rebased/Cargo.toml
    4c4
    < authors = ["{author name redacted} <{author email redacted}>"]
    ---
    > authors = ["Just A Stream <[email protected]>"]
    cat diffs/v0.5.5.diff
    diff -r -x .git -x .idea -x target -x Cargo.lock ./barter-rs-orig/Cargo.toml ./barter-rs-rebased/Cargo.toml
    4c4
    < authors = ["{author name redacted} <{author email redacted}>"]
    ---
    > authors = ["Just A Stream <[email protected]>"]
    cat diffs/v0.5.6.diff
    diff -r -x .git -x .idea -x target -x Cargo.lock ./barter-rs-orig/Cargo.toml ./barter-rs-rebased/Cargo.toml
    4c4
    < authors = ["{author name redacted} <{author email redacted}>"]
    ---
    > authors = ["Just A Stream <[email protected]>"]
    cat diffs/v0.5.7.diff
    diff -r -x .git -x .idea -x target -x Cargo.lock ./barter-rs-orig/Cargo.toml ./barter-rs-rebased/Cargo.toml
    4c4
    < authors = ["{author name redacted} <{author email redacted}>"]
    ---
    > authors = ["Just A Stream <[email protected]>"]
    cat diffs/v0.5.8.diff
    diff -r -x .git -x .idea -x target -x Cargo.lock ./barter-rs-orig/Cargo.toml ./barter-rs-rebased/Cargo.toml
    4c4
    < authors = ["{author name redacted} <{author email redacted}>"]
    ---
    > authors = ["Just A Stream <[email protected]>"]
    cat diffs/v0.5.9.diff
    diff -r -x .git -x .idea -x target -x Cargo.lock ./barter-rs-orig/Cargo.toml ./barter-rs-rebased/Cargo.toml
    4c4
    < authors = ["{author name redacted} <{author email redacted}>"]
    ---
    > authors = ["Just A Stream <[email protected]>"]
    cat diffs/v0.6.0.diff
    diff -r -x .git -x .idea -x target -x Cargo.lock ./barter-rs-orig/Cargo.toml ./barter-rs-rebased/Cargo.toml
    4c4
    < authors = ["{author name redacted} <{author email redacted}>"]
    ---
    > authors = ["Just A Stream <[email protected]>"]
    cat diffs/v0.6.1.diff
    diff -r -x .git -x .idea -x target -x Cargo.lock ./barter-rs-orig/Cargo.toml ./barter-rs-rebased/Cargo.toml
    4c4
    < authors = ["{author name redacted} <{author email redacted}>"]
    ---
    > authors = ["Just A Stream <[email protected]>"]
    cat diffs/v0.6.2.diff
    diff -r -x .git -x .idea -x target -x Cargo.lock ./barter-rs-orig/Cargo.toml ./barter-rs-rebased/Cargo.toml
    4c4
    < authors = ["{author name redacted} <{author email redacted}>"]
    ---
    > authors = ["Just A Stream <[email protected]>"]
    cat diffs/v0.6.3.diff
    diff -r -x .git -x .idea -x target -x Cargo.lock ./barter-rs-orig/Cargo.toml ./barter-rs-rebased/Cargo.toml
    4c4
    < authors = ["{author name redacted} <{author email redacted}>"]
    ---
    > authors = ["Just A Stream <[email protected]>"]
    cat diffs/v0.6.4.diff
    diff -r -x .git -x .idea -x target -x Cargo.lock ./barter-rs-orig/Cargo.toml ./barter-rs-rebased/Cargo.toml
    4c4
    < authors = ["{author name redacted} <{author email redacted}>"]
    ---
    > authors = ["Just A Stream <[email protected]>"]
    cat diffs/v0.6.5.diff
    diff -r -x .git -x .idea -x target -x Cargo.lock ./barter-rs-orig/Cargo.toml ./barter-rs-rebased/Cargo.toml
    4c4
    < authors = ["{author name redacted} <{author email redacted}>"]
    ---
    > authors = ["Just A Stream <[email protected]>"]
    cat diffs/v0.7.0.diff
    diff -r -x .git -x .idea -x target -x Cargo.lock ./barter-rs-orig/Cargo.toml ./barter-rs-rebased/Cargo.toml
    4c4
    < authors = ["{author name redacted} <{author email redacted}>"]
    ---
    > authors = ["Just A Stream <[email protected]>"]
    cat diffs/v0.7.1.diff
    diff -r -x .git -x .idea -x target -x Cargo.lock ./barter-rs-orig/Cargo.toml ./barter-rs-rebased/Cargo.toml
    4c4
    < authors = ["{author name redacted} <{author email redacted}>"]
    ---
    > authors = ["Just A Stream <[email protected]>"]
    cat diffs/v0.7.2.diff
    diff -r -x .git -x .idea -x target -x Cargo.lock ./barter-rs-orig/Cargo.toml ./barter-rs-rebased/Cargo.toml
    4c4
    < authors = ["{author name redacted} <{author email redacted}>"]
    ---
    > authors = ["Just A Stream <[email protected]>"]
    cat diffs/v0.8.0.diff
    diff -r -x .git -x .idea -x target -x Cargo.lock ./barter-rs-orig/Cargo.toml ./barter-rs-rebased/Cargo.toml
    4c4
    < authors = ["{author name redacted} <{author email redacted}>"]
    ---
    > authors = ["Just A Stream <[email protected]>"]
    cat diffs/v0.8.1.diff
    diff -r -x .git -x .idea -x target -x Cargo.lock ./barter-rs-orig/Cargo.toml ./barter-rs-rebased/Cargo.toml
    4c4
    < authors = ["{author name redacted} <{author email redacted}>"]
    ---
    > authors = ["Just A Stream <[email protected]>"]
    cat diffs/v0.8.2.diff
    diff -r -x .git -x .idea -x target -x Cargo.lock ./barter-rs-orig/Cargo.toml ./barter-rs-rebased/Cargo.toml
    4c4
    < authors = ["{author name redacted} <{author email redacted}>"]
    ---
    > authors = ["Just A Stream <[email protected]>"]
    cat diffs/v0.8.3.diff
    diff -r -x .git -x .idea -x target -x Cargo.lock ./barter-rs-orig/Cargo.toml ./barter-rs-rebased/Cargo.toml
    4c4
    < authors = ["{author name redacted} <{author email redacted}>"]
    ---
    > authors = ["Just A Stream <[email protected]>"]
    cat diffs/v0.8.4.diff
    diff -r -x .git -x .idea -x target -x Cargo.lock ./barter-rs-orig/Cargo.toml ./barter-rs-rebased/Cargo.toml
    4c4
    < authors = ["{author name redacted} <{author email redacted}>"]
    ---
    > authors = ["Just A Stream <[email protected]>"]
    

    Migration (merging issues)

    (see Migration section in #7, #6 & #5)

    Still no problems merging / rebasing anything.

    pr::chore 
    opened by carpetmaker 1
  • Rewrite project history

    Rewrite project history

    Rewrite project history

    This is an accompanying PR of #5

    Verification

    By running compare-branches.sh script specified in the Verification section of the #5 proposal, you can verify that this PR does not break any existing versions, or does not make changes to the project repository git tree for version releases.

    Verification process output log
    Info: Comparing versions (1 / 42)
    Info: Checked out v0.1.0 (original branch - 0d1467cc5a1b8318a3d2b4d941b1b8a38bd233a7)
    Info: Checked out v0.1.0 (rebased branch - ff17680d4fd249ed0e69b32fd4a4af6d4b63c659)
    Info: branch releases are identical for v0.1.0
    Info: Comparing versions (2 / 42)
    Info: Checked out v0.2.0 (original branch - 5dba365d1fd53630c7aa82943d3faa12aa27f835)
    Info: Checked out v0.2.0 (rebased branch - 6226e7e98aa3ba5b9f2723427b961f63fc01ee0e)
    Info: branch releases are identical for v0.2.0
    Info: Comparing versions (3 / 42)
    Info: Checked out v0.2.1 (original branch - 1ff46f09f4db8003c816432c16e718e59e00fdd7)
    Info: Checked out v0.2.1 (rebased branch - 2f729e9b298b66f3909931cd5a8da45d154e5031)
    Info: branch releases are identical for v0.2.1
    Info: Comparing versions (4 / 42)
    Info: Checked out v0.2.2 (original branch - 68d96309bff2a7fc367dd51b0d5120dc09fc46c6)
    Info: Checked out v0.2.2 (rebased branch - 7aabde5c1ed6c8a76a3aeabfccdf082e3363bf1e)
    Info: branch releases are identical for v0.2.2
    Info: Comparing versions (5 / 42)
    Info: Checked out v0.2.3 (original branch - fd85e3d47348e6c772116e368eca253075ea6c00)
    Info: Checked out v0.2.3 (rebased branch - 2f7e5500ad0d02ae0a535429c4db43dd52ed3fc1)
    Info: branch releases are identical for v0.2.3
    Info: Comparing versions (6 / 42)
    Info: Checked out v0.2.4 (original branch - ef717c03418840dedfdfc2d95edf950f67ec9e6a)
    Info: Checked out v0.2.4 (rebased branch - 778266ef9a02f0575835188d21fbad86e4bf96dc)
    Info: branch releases are identical for v0.2.4
    Info: Comparing versions (7 / 42)
    Info: Checked out v0.2.5 (original branch - 57ec50a8551455c5102b2082a56f89676ffd9be6)
    Info: Checked out v0.2.5 (rebased branch - 780f222b923e5832c5f9544abfe320ef41a8caaa)
    Info: branch releases are identical for v0.2.5
    Info: Comparing versions (8 / 42)
    Info: Checked out v0.2.6 (original branch - 64de2b24a7c11391683c6265ffcb1e00e9a88aec)
    Info: Checked out v0.2.6 (rebased branch - 4516cb7a88a3d7c86de3f2f5ccbfd48b7783d27f)
    Info: branch releases are identical for v0.2.6
    Info: Comparing versions (9 / 42)
    Info: Checked out v0.2.7 (original branch - 830c6c17e611107b53e49cdac44da99bade4687f)
    Info: Checked out v0.2.7 (rebased branch - 278f81c3e1706be1df7108610fa3396cde6c35ad)
    Info: branch releases are identical for v0.2.7
    Info: Comparing versions (10 / 42)
    Info: Checked out v0.2.8 (original branch - 430a33b9df0052b24bd170a0f291847035ddbd1c)
    Info: Checked out v0.2.8 (rebased branch - 21ce6a2b1525da127c09199087d484b87f53b58f)
    Info: branch releases are identical for v0.2.8
    Info: Comparing versions (11 / 42)
    Info: Checked out v0.2.9 (original branch - 204b8f5ca50c260c41a1c1f7f6cdedfcd7f64dfd)
    Info: Checked out v0.2.9 (rebased branch - 1ab858aaa99eeeecaee1c1fc4bdab5b15cb73548)
    Info: branch releases are identical for v0.2.9
    Info: Comparing versions (12 / 42)
    Info: Checked out v0.2.10 (original branch - 22e0d1d765c64c172377b340716910fda1c4aa37)
    Info: Checked out v0.2.10 (rebased branch - 8c1b5695ca3af2f37837508c126cb220c7798ca1)
    Info: branch releases are identical for v0.2.10
    Info: Comparing versions (13 / 42)
    Info: Checked out v0.2.11 (original branch - 78ab53fa5a042eb56ece795fb0a6a5b0aceca7a8)
    Info: Checked out v0.2.11 (rebased branch - 9169e19c41d9559f70a6c9869b2cbfebd9118f04)
    Info: branch releases are identical for v0.2.11
    Info: Comparing versions (14 / 42)
    Info: Checked out v0.3.0 (original branch - 25013f809da85bc5c20995397d20d170626bdcc9)
    Info: Checked out v0.3.0 (rebased branch - 3c7a7c481ccf857c3a4ef7c4491ab66576ecae21)
    Info: branch releases are identical for v0.3.0
    Info: Comparing versions (15 / 42)
    Info: Checked out v0.3.1 (original branch - 557b926e3c202616734dc4a9605253c72416231e)
    Info: Checked out v0.3.1 (rebased branch - ec5dcc44066fbe28ef4481061e9b293b56d400da)
    Info: branch releases are identical for v0.3.1
    Info: Comparing versions (16 / 42)
    Info: Checked out v0.4.0 (original branch - 5221bf49ce227268b2e6868c6055f200c6321d4b)
    Info: Checked out v0.4.0 (rebased branch - b781eb38d1d01494df691c8339e90c07defc9c9a)
    Info: branch releases are identical for v0.4.0
    Info: Comparing versions (17 / 42)
    Info: Checked out v0.4.1 (original branch - 56e5668ad8ccdf4df4c3a7183d045772aef8f151)
    Info: Checked out v0.4.1 (rebased branch - 507809adbe0e51cb24a37747271892e8ef3d9ec8)
    Info: branch releases are identical for v0.4.1
    Info: Comparing versions (18 / 42)
    Info: Checked out v0.5.0 (original branch - 6d27e30d0603683f2927c106646a3690a4939626)
    Info: Checked out v0.5.0 (rebased branch - 43994eed0a5a73c935cc2525cd5efd794f8f68f4)
    Info: branch releases are identical for v0.5.0
    Info: Comparing versions (19 / 42)
    Info: Checked out v0.5.1 (original branch - 6e659b7601cf107f6716315f52be03827e910599)
    Info: Checked out v0.5.1 (rebased branch - 31da2f6f3221903abc2a74a80d7fc01f302c05a1)
    Info: branch releases are identical for v0.5.1
    Info: Comparing versions (20 / 42)
    Info: Checked out v0.5.2 (original branch - 05830063457ae54db000a3158000a8dec3239fe6)
    Info: Checked out v0.5.2 (rebased branch - 371e8e486fd7ffa97edc8450a7e82eb48c70e690)
    Info: branch releases are identical for v0.5.2
    Info: Comparing versions (21 / 42)
    Info: Checked out v0.5.3 (original branch - 5bae25abc4ed878269bc8df9b679ccf42e235fd3)
    Info: Checked out v0.5.3 (rebased branch - 4221afe76c8cf019c1bbdf6f8a3634a98bcdcb0b)
    Info: branch releases are identical for v0.5.3
    Info: Comparing versions (22 / 42)
    Info: Checked out v0.5.4 (original branch - e9021da46717379615be01eadfc4ccae97422441)
    Info: Checked out v0.5.4 (rebased branch - e1fe8fc8c1e31f9600fce055fcc66b99f1fdb37a)
    Info: branch releases are identical for v0.5.4
    Info: Comparing versions (23 / 42)
    Info: Checked out v0.5.5 (original branch - 953a54cff61ab2dfc560f7adcf304a249aede437)
    Info: Checked out v0.5.5 (rebased branch - 07a706a54ca4cf9bcd7129abc4f7303118e97d4d)
    Info: branch releases are identical for v0.5.5
    Info: Comparing versions (24 / 42)
    Info: Checked out v0.5.6 (original branch - 3571f630d2913c76a5eb05e0891b5a3c18c9ad25)
    Info: Checked out v0.5.6 (rebased branch - 425688473732cb7c9de20f1928de5d1a5586c633)
    Info: branch releases are identical for v0.5.6
    Info: Comparing versions (25 / 42)
    Info: Checked out v0.5.7 (original branch - d322f9ac6d41fd39f738025cc8f789e28db04e26)
    Info: Checked out v0.5.7 (rebased branch - af3bbe4c7fe941b43acb809763e932bc638a0b69)
    Info: branch releases are identical for v0.5.7
    Info: Comparing versions (26 / 42)
    Info: Checked out v0.5.8 (original branch - f1543e8da74309619da6d71b220528e14ff54671)
    Info: Checked out v0.5.8 (rebased branch - 8913c053afecd389b6bd0f4e1aede62fea0e51dd)
    Info: branch releases are identical for v0.5.8
    Info: Comparing versions (27 / 42)
    Info: Checked out v0.5.9 (original branch - eaa19c6ed47930f6297692c6d0333d9442b9d336)
    Info: Checked out v0.5.9 (rebased branch - d662b898f9d3504a250e6c9412994a57adc90543)
    Info: branch releases are identical for v0.5.9
    Info: Comparing versions (28 / 42)
    Info: Checked out v0.5.10 (original branch - 89fd2602199ad99aec2216611d476b34667cf3d3)
    Info: Checked out v0.5.10 (rebased branch - 0b9544a6d13907a2922088bce5447e2cc4010445)
    Info: branch releases are identical for v0.5.10
    Info: Comparing versions (29 / 42)
    Info: Checked out v0.6.0 (original branch - 945cf1693de2bbaff6c3aa17775d4e67d5454239)
    Info: Checked out v0.6.0 (rebased branch - ed60818b03c811f841813d29126c02e2b0955a36)
    Info: branch releases are identical for v0.6.0
    Info: Comparing versions (30 / 42)
    Info: Checked out v0.6.1 (original branch - f16e763abe006002f7ebf0c295f6bb13a9923a18)
    Info: Checked out v0.6.1 (rebased branch - 219f63648772759a3517946aabfdb3f626f17146)
    Info: branch releases are identical for v0.6.1
    Info: Comparing versions (31 / 42)
    Info: Checked out v0.6.2 (original branch - 2022a73303f6ba467c68d8b2660e64b21912a8cb)
    Info: Checked out v0.6.2 (rebased branch - bc0073b3329dd8e597581a2ae5f1e573241caaac)
    Info: branch releases are identical for v0.6.2
    Info: Comparing versions (32 / 42)
    Info: Checked out v0.6.3 (original branch - c86cebcb47b8d3ff1d82dc179215f1d812893ed4)
    Info: Checked out v0.6.3 (rebased branch - baa7960023c7e8a00d5863f98fe7dfbdd5d8185a)
    Info: branch releases are identical for v0.6.3
    Info: Comparing versions (33 / 42)
    Info: Checked out v0.6.4 (original branch - d634cd5e5a3740eb838fefdc63fa8d0320c62419)
    Info: Checked out v0.6.4 (rebased branch - 1766d6480ee8d3f5d1813781a888632cee19d490)
    Info: branch releases are identical for v0.6.4
    Info: Comparing versions (34 / 42)
    Info: Checked out v0.6.5 (original branch - ca2b714b409686fedf01426533395408a3f48d39)
    Info: Checked out v0.6.5 (rebased branch - 91c93494e76e0502bbc77afdb2e8371fe18302be)
    Info: branch releases are identical for v0.6.5
    Info: Comparing versions (35 / 42)
    Info: Checked out v0.7.0 (original branch - 36e98f7ee9c0ad96fd45d3289a1d2b931f0ae122)
    Info: Checked out v0.7.0 (rebased branch - 0caa94ccc681f00f6a30676500ce658504085608)
    Info: branch releases are identical for v0.7.0
    Info: Comparing versions (36 / 42)
    Info: Checked out v0.7.1 (original branch - 3d9d4203485ff4e41b0d82527ba14d4a009d39a8)
    Info: Checked out v0.7.1 (rebased branch - 628e3495964aab2f858374589df5bf26117764d5)
    Info: branch releases are identical for v0.7.1
    Info: Comparing versions (37 / 42)
    Info: Checked out v0.7.2 (original branch - 495a8727a796871038c1adad5ffa9cab49f791a7)
    Info: Checked out v0.7.2 (rebased branch - 8e40acf68e8853d31810ee688ceef6a8a3f1a777)
    Info: branch releases are identical for v0.7.2
    Info: Comparing versions (38 / 42)
    Info: Checked out v0.8.0 (original branch - f855592f8f073d749ad62301724b9b4ac22d2aa8)
    Info: Checked out v0.8.0 (rebased branch - 733d388ef1d39d605e7bdb547c3be2aacfa1ea43)
    Info: branch releases are identical for v0.8.0
    Info: Comparing versions (39 / 42)
    Info: Checked out v0.8.1 (original branch - e10b4533175aadcc5898afed0a623105a2605435)
    Info: Checked out v0.8.1 (rebased branch - db072fe76f0833fcb0a47916374b77b3be2663f9)
    Info: branch releases are identical for v0.8.1
    Info: Comparing versions (40 / 42)
    Info: Checked out v0.8.2 (original branch - 9d9fa2f6a35aace70c2b1e2f4d59adac72f94463)
    Info: Checked out v0.8.2 (rebased branch - 80ee673a3322f44b5a1db6a3c689f4c1db22d37e)
    Info: branch releases are identical for v0.8.2
    Info: Comparing versions (41 / 42)
    Info: Checked out v0.8.3 (original branch - 2c5d2994118ac803a87b44f0bd5ce21c5086f50e)
    Info: Checked out v0.8.3 (rebased branch - f76aae14b126696c9538e11b3b85730399d4af81)
    Info: branch releases are identical for v0.8.3
    Info: Comparing versions (42 / 42)
    Info: Checked out v0.8.4 (original branch - ba2af7d4639f8977b10dfde927bf4beaf727f9d4)
    Info: Checked out v0.8.4 (rebased branch - 26e19e99631842cdba2dcd2a99ca10373001856e)
    Info: branch releases are identical for v0.8.4
    

    Migration (merging issues)

    (This section is copy-pasted from #5 )

    If you run into issues while attempting to merge your forked branch back into this rebased develop-new branch, here are the steps you need to take to solve the issues:

    1. Backup your branch just in case something goes wrong
      • run git checkout <mybranch>; git checkout -b <mybranch-backup>; git checkout <mybranch> (if not already checked out)
    2. Update your branch / sync it with develop-old branch (either via rebase or merge)
    3. Rebase onto develop-new branch
      • run git rebase --onto develop-new develop-old
    4. That's it! Very simple & easy
    5. If you run into problems by any chance (highly unlikely), you could consider few alternatives
      • contact me (@carpetmaker), I can help you resolve it quickly, or do the migration / merge for you
      • git cherry-pick all of your commits (which haven't yet been merged into develop-old branch) into a new branch based off / branched (forked) from develop-new
      • export all of your unmerged commits (read above) with git format-patch and apply them to your newly created branch via git am (essentially the same as cherry-picking)
    pr::chore 
    opened by carpetmaker 1
  • Chore: Update Barter Dependencies

    Chore: Update Barter Dependencies

    Refactor

    • Update to barter-data 0.6.5
    • Update to barter-integration 0.5.1
    • Make required changes to integrate new barter_data::event::MarketEvent<T> structure.
    opened by just-a-stream 0
  • Feature request: leverage

    Feature request: leverage

    Features for futures market

    • [ ] Open oders (cross/isolated) (leverages) (sigle/multi-assets mode)
    • [ ] Liquidation
    • [ ] Increasing/decreasing margin size

    for perpetual market

    • [ ] Paying funding fee

    for delivery market

    • [ ] Closing on time to delivery
    opened by seongs1024 0
  • Is the output of the performance analysis asnychronous?

    Is the output of the performance analysis asnychronous?

    I got bad formatted output, when I ran the example with BTCUSDTPERP data (about 1000 ticks). It seems that printing the performance analysis and system event logs is executed asynchronously.

    # snipped...
    PositionUpdate { position_id: "255385be-bc70-4f3d-bdb6-186049dd7900_binance_(btc_usdt, spot)_position", update_time: 2022-11-14T21:14:59.999Z, current_symbol_price: 16306.0, current_value_gross: 97.836, unrealised_profit_loss: -30.915479999999995 }
    PositionUpdate { position_id: "255385be-bc70-4f3d-bdb6-186049dd7900_binance_(btc_usdt, spot)_position", update_time: 2022-11-14T21:29:59.999Z, current_symbol_price: 16338.0, current_value_gross: 98.028, unrealised_profit_loss: -30.723479999999988 }
                    PositionUpdate { position_id: "255385be-bc70-4f3d-bdb6-186049dd7900_binance_(btc_usdt, spot)_position", update_time: 2022-11-14T21:44:59.999Z, current_symbol_price: 16374.4, current_value_gross: 98.2464, unrealised_profit_loss: -30.50508 }
    PositionUpdate { position_id: "255385be-bc70-4f3d-bdb6-186049dd7900_binance_(btc_usdt, spot)_position", update_time: 2022-11-14T21:59:59.999Z, current_symbol_price: 16396.6, current_value_gross: 98.3796, unrealised_profit_loss: -30.371879999999997 }
     | PositionUpdate { position_id: "255385be-bc70-4f3d-bdb6-186049dd7900_binance_(btc_usdt, spot)_position", update_time: 2022-11-14T22:14:59.999Z, current_symbol_price: 16404.2, current_value_gross: 98.4252, unrealised_profit_loss: -30.32627999999999 }
    0.000        PositionUpdate { position_id: "255385be-bc70-4f3d-bdb6-186049dd7900_binance_(btc_usdt, spot)_position", update_time: 2022-11-14T22:29:59.999Z, current_symbol_price: 16393.4, current_value_gross: 98.36040000000001, unrealised_profit_loss: -30.39107999999998 }
     | PositionUpdate { position_id: "255385be-bc70-4f3d-bdb6-186049dd7900_binance_(btc_usdt, spot)_position", update_time: 2022-11-14T22:44:59.999Z, current_symbol_price: 16356.0, current_value_gross: 98.136, unrealised_profit_loss: -30.615479999999998 }
    0                 PositionUpdate { position_id: "255385be-bc70-4f3d-bdb6-186049dd7900_binance_(btc_usdt, spot)_position", update_time: 2022-11-14T22:59:59.999Z, current_symbol_price: 16398.0, current_value_gross: 98.388, unrealised_profit_loss: -30.36347999999999 }
    Signal { time: 2023-01-01T14:32:05.173112179Z, exchange: binance, instrument: Instrument { base: btc, quote: usdt, kind: Spot }, signals: {CloseLong: SignalStrength(1.0), Short: SignalStrength(1.0)}, market_meta: MarketMeta { close: 16549.2, time: 2022-11-14T23:14:59.999Z } }
    PositionUpdate { position_id: "255385be-bc70-4f3d-bdb6-186049dd7900_binance_(btc_usdt, spot)_position", update_time: 2022-11-14T23:14:59.999Z, current_symbol_price: 16549.2, current_value_gross: 99.29520000000001, unrealised_profit_loss: -29.456279999999985 }
    OrderEvent { time: 2023-01-01T14:32:05.173124573Z, exchange: binance, instrument: Instrument { base: btc, quote: usdt, kind: Spot }, market_meta: MarketMeta { close: 16549.2, time: 2022-11-14T23:14:59.999Z }, decision: CloseLong, quantity: -0.006, order_type: Market }
    FillEvent { time: 2023-01-01T14:32:05.173127616Z, exchange: binance, instrument: Instrument { base: btc, quote: usdt, kind: Spot }, market_meta: MarketMeta { close: 16549.2, time: 2022-11-14T23:14:59.999Z }, decision: CloseLong, quantity: -0.006, fill_value_gross: 99.29520000000001, fees: Fees { exchange: 9.929520000000002, slippage: 4.964760000000001, network: 0.0 } }
    PositionExit { position_id: "255385be-bc70-4f3d-bdb6-186049dd7900_binance_(btc_usdt, spot)_position", exit_time: 2023-01-01T14:32:05.173127616Z, exit_balance: Balance { time: 2023-01-01T14:32:05.173127616Z, total: 8754.7218585, available: 8670.3209385 }, exit_fees: Fees { exchange: 9.929520000000002, slippage: 4.964760000000001, network: 0.0 }, exit_fees_total: 14.894280000000002, exit_avg_price_gross: 16549.2, exit_value_gross: 99.29520000000001, realised_profit_loss: -29.494619999999987 }
    Balance { time: 2023-01-01T14:32:05.173127616Z, total: 8754.7218585, available: 8754.7218585 }
    Signal { time: 2023-01-01T14:32:05.173154442Z, exchange: binance, instrument: Instrument { base: btc, quote: usdt, kind: Spot }, signals: {Short: SignalStrength(1.0), CloseLong: SignalStrength(1.0)}, market_meta: MarketMeta { close: 16634.6, time: 2022-11-14T23:29:59.999Z } }
    OrderEvent { time: 2023-01-01T14:32:05.173164310Z, exchange: binance, instrument: Instrument { base: btc, quote: usdt, kind: Spot }, market_meta: MarketMeta { close: 16634.6, time: 2022-11-14T23:29:59.999Z }, decision: Short, quantity: -0.006, order_type: Market }
    FillEvent { time: 2023-01-01T14:32:05.173167174Z, exchange: binance, instrument: Instrument { base: btc, quote: usdt, kind: Spot }, market_meta: MarketMeta { close: 16634.6, time: 2022-11-14T23:29:59.999Z }, decision: Short, quantity: -0.006, fill_value_gross: 99.8076, fees: Fees { exchange: 9.98076, slippage: 4.99038, network: 0.0 } }
     Position { position_id: "255385be-bc70-4f3d-bdb6-186049dd7900_binance_(btc_usdt, spot)_position", meta: PositionMeta { enter_time: 2022-11-14T23:29:59.999Z, update_time: 2023-01-01T14:32:05.173167174Z, exit_balance: None }, exchange: binance, instrument: Instrument { base: btc, quote: usdt, kind: Spot }, side: Sell, quantity: -0.006, enter_fees: Fees { exchange: 9.98076, slippage: 4.99038, network: 0.0 }, enter_fees_total: 14.97114, enter_avg_price_gross: 16634.6, enter_value_gross: 99.8076, exit_fees: Fees { exchange: 0.0, slippage: 0.0, network: 0.0 }, exit_fees_total: 0.0, exit_avg_price_gross: 0.0, exit_value_gross: 0.0, current_symbol_price: 16634.6, current_value_gross: 99.8076, unrealised_profit_loss: -29.94228, realised_profit_loss: 0.0 }
    Balance { time: 2023-01-01T14:32:05.173167174Z, total: 8754.7218585, available: 8639.9431185 }
    Signal { time: 2023-01-01T14:32:05.173184671Z, exchange: binance, instrument: Instrument { base: btc, quote: usdt, kind: Spot }, signals: {CloseLong: SignalStrength(1.0), Short: SignalStrength(1.0)}, market_meta: MarketMeta { close: 16692.1, time: 2022-11-14T23:44:59.999Z } }
    PositionUpdate { position_id: "255385be-bc70-4f3d-bdb6-186049dd7900_binance_(btc_usdt, spot)_position", update_time: 2022-11-14T23:44:59.999Z, current_symbol_price: 16692.1, current_value_gross: 100.15259999999999, unrealised_profit_loss: -30.28728 }
    Signal { time: 2023-01-01T14:32:05.173202045Z, exchange: binance, instrument: Instrument { base: btc, quote: usdt, kind: Spot }, signals: {CloseLong: SignalStrength(1.0), Short: SignalStrength(1.0)}, market_meta: MarketMeta { close: 16605.2, time: 2022-11-14T23:59:59.999Z } }
    PositionUpdate { position_id: "255385be-bc70-4f3d-bdb6-186049dd7900_binance_(btc_usdt, spot)_position", update_time: 2022-11-14T23:59:59.999Z, current_symbol_price: 16605.2, current_value_gross: 99.6312, unrealised_profit_loss: -29.765880000000013 }
    |
    +-----------------------+--------+------+--------+--------------+----------------+-------------+------------------+------------------+-------------+--------------+--------------+---------------+--------------+--------------+-------------------+---------------+--------------------+
    
    opened by seongs1024 2
  • Perform various GitHub repo chores

    Perform various GitHub repo chores

    Perform various GitHub repo chores

    Summary

    This issue / proposal addresses various miscellaneous tasks related to GitHub repo which need to be performed.

    Description

    These are some of the tasks which need to be performed (on all 4 repos):

    • [x] add project description
    • [x] add project topics / keywords
      • look at other similar trading bots, libs & frameworks and copy keywords from them
    • [x] add project URL
      • use organisation repos page
    • [ ] configure GitHub Actions file
      • add testing pipeline
      • add linting / re-formatting pipeline
      • additions??
    • [ ] add PULL_REQUEST_TEMPLATE file
    • [ ] add ISSUE_TEMPLATE file
    • [ ] add other common files
      • take a look here: https://stackoverflow.com/questions/60507097
      • and here: https://keepachangelog.com/
      • and also here: https://github.com/kmindi/special-files-in-repository-root/blob/master/README.md
      • (semi-unrelated) here also: https://github.com/vweevers/common-changelog
    issue::meta issue::crossrepo 
    opened by carpetmaker 0
  • Organise workflow in `Barter Project` GitHub Project

    Organise workflow in `Barter Project` GitHub Project

    Organise workflow in Barter Project GitHub Project

    Summary

    This issue / proposal addresses the organisation of workflow in Barter Project GitHub Project. It mainly focuses on proper organisation of views (Boards & Tables), Status field etc.

    Description

    Here are some of the things which come to my mind:

    • [x] issue & pull request views need to be separated / filtered
    • [x] unaddressed (unprocessed / un-triaged / untagged) items need to be separated from addressed ones
    • [ ] Kanban board Status field needs to be designed in a senseful way
      • Todo, In Progress & Done columns are too generic
        • they don't precisely represent each issue's common increments / phases
      • add some columns which represent additional steps in issue progression
        • e.g. Rejected / Accepted / Approved / In Review / Waiting For Approval / Waiting For Merge or something similar
      • items are only allowed to move from left to right (no backwards movement)
      • items should be pulled instead of pushed by assigned team members
    • [ ] additional workflow suggestions?
    issue::meta issue::crossrepo 
    opened by carpetmaker 0
  • Update docs

    Update docs

    Update docs

    Summary

    This issue / proposal attempts to address the project's need for a proper documentation update.

    Description

    Type of docs which need to be updated / added (including but not limited to):

    • project-related docs
      • rust docs
        • Rust doc-string comments inside the code files which gets auto-rendered to API reference docs - see more here
        • fix cross-linking / cross-referencing
      • README.md
        • file needs to be properly re-structured to reference all other markdown files proposed below
        • sections need to be sorted by the degree of complexity / depth of the topic covered
      • ARCHITECTURE.md
        • describes the project architecture
        • could contain an embedded diagrams (UML or less formal) & flowcharts
      • Concepts
        • covering various concepts (theoretical or otherwise) introduced by the project
        • glossary of terms for the project
      • Examples
        • simple & trivial examples covering various project functionalities
      • Tutorial
        • proper user guide
      • Quick start
        • see 2 sections above
    • repo-related docs
      • CONTRIBUTING.md
        • contains instructions on how to contribute
        • how to write code, tests, docs, git commit, git branches / workflow, setup dev environment etc
      • MAINTAINING.md
        • contains instructions on how to maintain the repo
        • how to manage & review issues / pull requests, organise the project board etc
      • CODE_OF_CONDUCT.md
        • bullshit file covering various topics related to political correctness, inclusivity, racism, sexuality, hate speech, profanity etc.
        • mainly used as a diplomatic no-responsibility disclaimer guarding authors & maintainers from consequences of stupid shit & abuse some degenerate contributor might do and ruin the things for the whole community
        • nice to have, but definitely lowest priority ever
    • dedicated docs site / wiki pages
      • GitHub Wiki pages?
      • currently redundant?
    issue::docs issue::enhancement issue::newcomers issue::helpme issue::meta issue::crossrepo 
    opened by carpetmaker 0
Owner
Barter
Open-source Rust algorithmic trading framework.
Barter
H2O Open Source Kubernetes operator and a command-line tool to ease deployment (and undeployment) of H2O open-source machine learning platform H2O-3 to Kubernetes.

H2O Kubernetes Repository with official tools to aid the deployment of H2O Machine Learning platform to Kubernetes. There are two essential tools to b

H2O.ai 16 Nov 12, 2022
The Amp programming language: a language designed for building high performance systems.

A language designed for building high performance systems. Platform Support x86_64-pc-windows โœ… x86_64-unknown-linux โš ๏ธ untested x86_64-unknown-darwin

The Amp Programming Language 5 Mar 17, 2023
High-performance and normalised trading interface capable of executing across many financial venues

High-performance and normalised trading interface capable of executing across many financial venues. Also provides a feature rich simulated exchange to assist with backtesting and dry-trading.

Barter 7 Dec 28, 2022
botwork is a single-binary, generic and open-source automation framework written in Rust for acceptance testing & RPA

botwork botwork is a single-binary, generic and open-source automation framework written in Rust for acceptance testing, acceptance test driven develo

Nitimis 8 Apr 17, 2023
A lightweight, opinionated CQRS and event sourcing framework targeting serverless architectures.

cqrs A lightweight, opinionated CQRS and event sourcing framework targeting serverless architectures. Command Query Responsibility Segregation (CQRS)

Serverless Technology 161 Dec 29, 2022
Rust-advent - Learning Rust by solving advent of code challenges (Streaming live on Twitch every Monday)

Rust advent ?? ?? Learning Rust by implementing solutions for Advent of Code problems. ?? HEY, we are live-streaming our attempts to solve the exercis

Luciano Mammino 20 Nov 11, 2022
Coinlive is an interactive command line tool that displays live cryptocurrency prices.

Coinlive is an interactive command line tool that displays live cryptocurrency prices. It can also display simple historical price charts.

Mayer Analytics 9 Dec 7, 2022
glicol cli: cross-platform music live coding in terminal

glicol-cli What's this? It's a command line interface that you can use for music live coding with Glicol. It watches a file changes and then update th

Glicol 70 Apr 14, 2023
zkPoEX enables white hat hackers to report live vulnerabilities in smart contracts while maintaining the confidentiality of the exploit

zkPoEX enables white hat hackers to report live vulnerabilities in smart contracts while maintaining the confidentiality of the exploit, facilitating efficient communication and collaboration between hackers and project owners for a more secure DeFi ecosystem.

zkoranges 135 Apr 16, 2023
A CLI tool to drive test-driven Rust workshops

wr A Rust workshop runner wr is a CLI to drive test-driven workshops written in Rust. It is designed to be used in conjunction with a workshop reposit

Mainmatter 7 Oct 16, 2023
A command driven spotify player

spotify-player Table of Contents Introduction Examples Demo Installation Requirements Spotify Connect Streaming Commands Actions Search Page Mouse sup

Thang Pham 185 Dec 28, 2022
policy-driven signing service

SigningService (maybe we'll have a more clever name one day!) What is this? This repo has a little "serverless" (runs on lambda and some other service

null 4 Jul 15, 2022
Make data-driven table rendering easy with Dioxus

Dioxus Table Make data-driven table rendering easy with Dioxus Installation Until the next release of Dioxus this requires Dioxus nightly from git. Th

null 9 Oct 9, 2022
gfold is a CLI-driven application that helps you keep track of multiple Git repositories.

gfold is a CLI-driven application that helps you keep track of multiple Git repositories.

Nick Gerace 215 Jan 4, 2023
Holo is a suite of routing protocols designed to support high-scale and automation-driven networks.

Holo is a suite of routing protocols designed to support high-scale and automation-driven networks. For a description of what a routing protocol is, p

Renato Westphal 42 Apr 16, 2023
An open source artifact manager. Written in Rust back end and an Vue front end to create a fast and modern experience

nitro_repo Nitro Repo is an open source free artifact manager. Written with a Rust back end and a Vue front end to create a fast and modern experience

Wyatt Jacob Herkamp 30 Dec 14, 2022
zigfi is an open-source stocks, commodities and cryptocurrencies price monitoring CLI app, written fully in Rust, where you can organize assets you're watching easily into watchlists for easy access on your terminal.

zigfi zigfi is an open-source stocks, commodities and cryptocurrencies price monitoring CLI app, written fully in Rust, where you can organize assets

Aldrin Zigmund Cortez Velasco 18 Oct 24, 2022
A blazing fast command line license generator for your open source projects written in Rust๐Ÿš€

Overview This is a blazing fast โšก , command line license generator for your open source projects written in Rust. I know that GitHub

Shoubhit Dash 43 Dec 30, 2022
An open source, programmed in rust, privacy focused tool for reading programming resources (like stackoverflow) fast, efficient and asynchronous from the terminal.

Falion An open source, programmed in rust, privacy focused tool for reading programming resources (like StackOverFlow) fast, efficient and asynchronou

Obscurely 17 Dec 20, 2022