10 Commits
Author SHA1 Message Date
swaits 25aa85a5fa chore: update dependencies 2024-03-07 17:09:55 -07:00
swaits 2ca3420035 add github mirror 2024-01-29 10:06:00 -07:00
swaits 2e65c9fa03 chore: update dependencies, bump version to 0.6.12 2023-11-01 10:15:45 -06:00
swaits 6fc891b0e8 chore: update CHANGELOG to 0.6.11 2023-10-31 22:12:07 -06:00
swaits 4ab1aaaea2 chore: finally add CHANGELOG.md
Should've added a CHANGELOG.md a long time ago and stuck with
Conventional Commits.

Used `git cliff` to generate a mostly-acceptable changelog.
2023-10-31 21:58:45 -06:00
swaits 23713e9e89 chore: update dependencies, update CI 2023-10-23 18:46:33 -06:00
swaits 423f439714 chore: allow lint which is failing in proptest (thank you CI) 2023-10-23 18:14:07 -06:00
swaits 0c1484c222 style: convert to nextest; README.md formatting 2023-10-23 18:06:12 -06:00
swaits 88da4a2452 chore: update dependencies 2023-10-20 22:57:35 -06:00
swaits f5b82c5cb3 docs: README update (contributing) 2023-09-29 11:44:11 -06:00
7 changed files with 279 additions and 38 deletions

No files matched your search

+12 -4
View File
@@ -4,9 +4,12 @@ packages:
- cargo-audit
- cargo-deny
- cargo-msrv
- cargo-nextest
- cargo-outdated
- cargo-tarpaulin
- cargo-udeps
secrets:
- 88cce185-d2ec-4573-9546-e33f36f79bbf
sources:
- https://git.sr.ht/~swaits/vivaldi-nc
artifacts:
@@ -52,13 +55,13 @@ tasks:
rustup default stable
cd vivaldi-nc/
cargo build --verbose --all-targets --all-features
cargo test --verbose --all-features
cargo nextest run --verbose --all-targets --all-features
- nightly: |
rustup default nightly
cd vivaldi-nc/
cargo clippy --verbose --all-targets --all-features ||:
cargo build --verbose --all-targets --all-features ||:
cargo test --verbose --all-targets --all-features ||:
cargo clippy --verbose --all-targets --all-features ||:
cargo build --verbose --all-targets --all-features ||:
cargo nextest --verbose --all-targets --all-features ||:
- bench: |
rustup default stable
cd vivaldi-nc/
@@ -72,3 +75,8 @@ tasks:
cd vivaldi-nc/
rustup run stable cargo doc --no-deps
rustup run nightly cargo doc --no-deps ||:
- mirror-to-github: |
cd ~/vivaldi-nc
ssh-keyscan -t rsa github.com >> ~/.ssh/known_hosts
git remote add github git@github.com:swaits/vivaldi-nc.git
git push --mirror github
+142
View File
@@ -0,0 +1,142 @@
# Changelog
All notable changes to this project will be documented in this file.
## [0.6.12] - 2023-11-01
### Miscellaneous Tasks
- Update dependencies
## [0.6.11]
### Miscellaneous Tasks
- Finally add CHANGELOG.md
## [0.6.4]
### Miscellaneous Tasks
- Add MSRV (1.60)
- Upgrade dependencies
## [0.6.3]
### Styling
- Format Cargo.toml
- More Cargo.toml formatting
- Move clippy allows to specific lines of code
### Testing
- Add (and fix) more deny lints
- Add audit, deny, outdated, and udeps to CI
- Fix cargo audit advisory db location
- Make accepted licenses explicit
## [0.6.2]
### Bug Fixes
- Allow clippy lints on specific tests
### Refactor
- Change std::time::Duration to std::core::Duration
- Change unwrap()s to expects() and deny in clippy
- Clean up by using cfg-if where possible
### Testing
- Use prop_assert* macros where appropriate
### Dev
- Add husky for pre-commit hook generation
## [0.6.1]
### Refactor
- Switch to array-init
## [0.6.0]
### Testing
- Add more stuff to CI
- Add examples to CI
- Get to 100% coverage, clean up cargo features
## [0.5.4]
### Performance
- Add benchmark, optimize
## [0.5.3]
### Documentation
- Updates to NetworkCoordinate
## [0.5.2]
### Features
- F32/f64 cargo features added
## [0.5.1]
### Documentation
- Udpate crate description
- Minor updates re: type aliases, crate to 0.5.1
## [0.5.0]
### Features
- Improve ergonomics for serialization format
- Type aliases for 2D/3D NetworkCoordinates
## [0.4.1]
### Bug Fixes
- Exclude examples from crate
## [0.4.0]
### Bug Fixes
- Add numeric stability
### Features
- Add PlanetLab example
### Testing
- Add proptest, make vec mul/div scalar safer
- Add property tests to HeightVector
- Add test for NetworkCoordinate::estimate_rtt
### Misc
- Formatting
## [0.3.1]
### Documentation
- Add link to docs.rs in README
- Add link to ticket tracker
### Features
- Add serde
<!-- generated by git-cliff -->
+9 -9
View File
@@ -1,6 +1,6 @@
[package]
name = "vivaldi-nc"
version = "0.6.10"
version = "0.6.12"
edition = "2021"
authors = ["Stephen Waits <steve@waits.net>"]
description = "Vivaldi network coordinates for fast, distributed latency estimates in multinode networks, with a clean and simple interface."
@@ -9,10 +9,10 @@ keywords = ["vivaldi", "network", "coordinates", "distributed", "p2p"]
categories = ["algorithms", "network-programming"]
documentation = "https://docs.rs/vivaldi-nc/"
readme = "README.md"
homepage = "https://sr.ht/~swaits/vivaldi-nc/"
repository = "https://git.sr.ht/~swaits/vivaldi-nc"
homepage = "https://github.com/swaits/vivaldi-nc"
repository = "https://github.com/swaits/vivaldi-nc.git"
exclude = ["examples/*"]
rust-version = "1.64"
rust-version = "1.65"
[features]
default = []
@@ -39,13 +39,13 @@ cargo-husky = { version = "1.5.0", features = [
"run-cargo-clippy",
"run-cargo-fmt",
] }
proptest = "1.2.0"
serde_json = "1.0.107"
proptest = "1.4.0"
serde_json = "1.0.114"
[dependencies]
array-init = "2.1.0"
cfg-if = "1.0.0"
num-traits = "0.2.16"
num-traits = "0.2.18"
rand = "0.8.5"
serde = { version = "1.0.188", features = ["serde_derive"] }
serde_with = "3.3.0"
serde = { version = "1.0.197", features = ["serde_derive"] }
serde_with = "3.6.1"
+29 -23
View File
@@ -3,18 +3,19 @@
![Rust Version](https://img.shields.io/badge/rustc-1.60+-blue.svg) [![docs.rs](https://img.shields.io/docsrs/vivaldi-nc)](https://docs.rs/vivaldi-nc/) [![builds.sr.ht status](https://builds.sr.ht/~swaits/vivaldi-nc.svg)](https://builds.sr.ht/~swaits/vivaldi-nc?) [![Crates.io](https://img.shields.io/crates/v/vivaldi-nc)](https://crates.io/crates/vivaldi-nc) ![Crates.io](https://img.shields.io/crates/d/vivaldi-nc) ![Crates.io](https://img.shields.io/crates/l/vivaldi-nc)
<!--toc:start-->
- [Introduction](#introduction)
- [Addressing the Drawbacks](#addressing-the-drawbacks)
- [Usage](#usage)
- [Getting Started](#getting-started)
- [Cargo Features](#cargo-features)
- [Examples](#examples)
- [Dependencies](#dependencies)
- [Design Goals & Alternatives](#design-goals-alternatives)
- [Other Vivaldi NC Implementations](#other-vivaldi-nc-implementations)
- [Other NC Algorithms](#other-nc-algorithms)
- [Getting Help or Contributing](#getting-help-or-contributing)
- [License](#license)
- [vivaldi-nc - Vivaldi Network Coordinates](#vivaldi-nc-vivaldi-network-coordinates)
- [Introduction](#introduction)
- [Addressing the Drawbacks](#addressing-the-drawbacks)
- [Usage](#usage)
- [Getting Started](#getting-started)
- [Cargo Features](#cargo-features)
- [Examples](#examples)
- [Dependencies](#dependencies)
- [Design Goals & Alternatives](#design-goals-alternatives)
- [Other Vivaldi NC Implementations](#other-vivaldi-nc-implementations)
- [Other NC Algorithms](#other-nc-algorithms)
- [Getting Help or Contributing](#getting-help-or-contributing)
- [License](#license)
<!--toc:end-->
## Introduction
@@ -37,20 +38,20 @@ According to the [Vivaldi coordinates article on Wikipedia](https://en.wikipedia
> has a prime use in networking. The algorithm behind the system uses a
> distributed technique to estimate propagation times between peers in the
> network.
>
>
> Through this scheme, network topology awareness can be used to tune the
> network behaviour to more efficiently distribute data. For example, in a
> peer-to-peer network, more responsive identification and delivery of content
> can be achieved. In the Azureus application, Vivaldi is used to improve the
> performance of the distributed hash table that facilitates query matches.
>
> performance of the distributed hash table that facilitates query matches.
>
> **Advantages**
>
>
> - Vivaldi is a fully distributed scheme, which achieves good scalability.
> - The Vivaldi algorithm is simple and easy to implement.
>
>
> **Drawbacks**
>
>
> - Vivaldi is based on the Euclidean distance model, which requires the
> predicted distances to obey the triangle inequality. However, there are
> many triangle inequality violations (TIVs) on the Internet.
@@ -264,7 +265,12 @@ ticket](https://todo.sr.ht/~swaits/vivaldi-nc) or post on
Discussion related to development or patch submissions should go to
[`vivaldi-nc-devel@`](https://lists.sr.ht/~swaits/vivaldi-nc-devel).
Patchsets should use [git-send-email](https://git-send-email.io/) or the [sr.ht
If you want to contribute code enhancements, fixes directly, you should create
a free account on [Sourcehut](https://sourcehut.org/), clone the repo, and then
use the UI to send patchets over.
Otherwise, you may send patchsets via
[git-send-email](https://git-send-email.io/) or through the [sr.ht
UI](https://git.sr.ht/~swaits/vivaldi-nc/send-email) (easiest IMO).
Patch submitters implicitly agree that all contributions they submit fall under
@@ -273,19 +279,19 @@ the MIT license.
## License
> MIT License
>
>
> Copyright (c) 2023 Stephen Waits
>
>
> Permission is hereby granted, free of charge, to any person obtaining a copy
> of this software and associated documentation files (the "Software"), to deal
> in the Software without restriction, including without limitation the rights
> to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
> copies of the Software, and to permit persons to whom the Software is
> furnished to do so, subject to the following conditions:
>
>
> The above copyright notice and this permission notice shall be included in all
> copies or substantial portions of the Software.
>
>
> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+83
View File
@@ -0,0 +1,83 @@
# git-cliff ~ default configuration file
# https://git-cliff.org/docs/configuration
#
# Lines starting with "#" are comments.
# Configuration options are organized into tables and keys.
# See documentation for more information on available options.
[changelog]
# changelog header
header = """
# Changelog\n
All notable changes to this project will be documented in this file.\n
"""
# template for the changelog body
# https://keats.github.io/tera/docs/#introduction
body = """
{% if version %}\
## [{{ version | trim_start_matches(pat="v") }}] - {{ timestamp | date(format="%Y-%m-%d") }}
{% else %}\
## [unreleased]
{% endif %}\
{% for group, commits in commits | group_by(attribute="group") %}
### {{ group | upper_first }}
{% for commit in commits %}
- {% if commit.breaking %}[**breaking**] {% endif %}{{ commit.message | upper_first }}\
{% endfor %}
{% endfor %}\n
"""
# remove the leading and trailing whitespace from the template
trim = true
# changelog footer
footer = """
<!-- generated by git-cliff -->
"""
# postprocessors
postprocessors = [
# { pattern = '<REPO>', replace = "https://github.com/orhun/git-cliff" }, # replace repository URL
]
[git]
# parse the commits based on https://www.conventionalcommits.org
conventional_commits = true
# filter out the commits that are not conventional
filter_unconventional = true
# process each line of a commit as an individual commit
split_commits = false
# regex for preprocessing the commit messages
commit_preprocessors = [
# { pattern = '\((\w+\s)?#([0-9]+)\)', replace = "([#${2}](<REPO>/issues/${2}))"}, # replace issue numbers
]
# regex for parsing and grouping commits
commit_parsers = [
{ message = "^feat", group = "Features" },
{ message = "^fix", group = "Bug Fixes" },
{ message = "^doc", group = "Documentation" },
{ message = "^perf", group = "Performance" },
{ message = "^refactor", group = "Refactor" },
{ message = "^style", group = "Styling" },
{ message = "^test", group = "Testing" },
{ message = "^chore\\(release\\): prepare for", skip = true },
{ message = "^chore\\(deps\\)", skip = true },
{ message = "^chore\\(pr\\)", skip = true },
{ message = "^chore\\(pull\\)", skip = true },
{ message = "^chore|ci", group = "Miscellaneous Tasks" },
{ body = ".*security", group = "Security" },
{ message = "^revert", group = "Revert" },
]
# protect breaking changes from being skipped due to matching a skipping commit_parser
protect_breaking_commits = false
# filter out the commits that are not matched by commit parsers
filter_commits = false
# regex for matching git tags
tag_pattern = "v[0-9].*"
# regex for skipping tags
skip_tags = "v0.1.0-beta.1"
# regex for ignoring tags
ignore_tags = ""
# sort the tags topologically
topo_order = false
# sort the commits inside sections by oldest/newest order
sort_commits = "oldest"
# limit the number of commits included in the changelog.
# limit_commits = 42
+3 -2
View File
@@ -47,7 +47,7 @@ use core::ops::{Add, Mul, Sub};
use rand::prelude::*;
use serde::{Deserialize, Serialize};
use crate::vector::{self, Vector};
use crate::vector::Vector;
//
// **** Features ****
@@ -160,7 +160,7 @@ impl<const N: usize> Default for HeightVector<N> {
/// Default value for a Vivaldi height vector is just the defaults of its children types.
fn default() -> Self {
Self {
position: vector::Vector::default(),
position: Vector::default(),
height: Default::default(),
}
}
@@ -236,6 +236,7 @@ impl<const N: usize> Mul<FloatType> for HeightVector<N> {
//
// **** Tests ****
//
#[allow(clippy::ignored_unit_patterns)]
#[cfg(test)]
mod tests {
use super::*;
+1
View File
@@ -150,6 +150,7 @@ where
// **** Tests ****
//
#[allow(clippy::ignored_unit_patterns)]
#[cfg(test)]
mod tests {
use super::*;