Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
f92d2b6
replace concurent::SpinLock by lib::SpinLock
razdoburdin Oct 20, 2026
03a070f
replace concurent::IDTranslator by svs::IDTranslator
razdoburdin Oct 20, 2026
de1a9da
unify vamana::concurrent::BatchIterator with vamana::BatchIterator by…
razdoburdin Oct 20, 2026
587ca31
return concurrent::SpinLock as an alias
razdoburdin Oct 20, 2026
716e23b
return the file with concurrent::SpinLock as an alias
razdoburdin Oct 20, 2026
30b9b7c
replace concurrent::BulkUpdate by vamana::BulkUpdate
razdoburdin Oct 21, 2026
5892dbc
unify concurrent::MutableBuffer with vamana::MutableBuffer
razdoburdin Oct 22, 2026
9700510
Merge branch 'main' into dev/razdoburdin/concurent_unification
razdoburdin Oct 22, 2026
ad06fde
unify concurrent::graph::MemoryGraph and svs::graph::MemoryGraph
razdoburdin Oct 22, 2026
96a3ac8
unify assemble from disk/stream for MultiIndex
razdoburdin Oct 22, 2026
fee6d7f
merge main
razdoburdin Oct 22, 2026
4ce154a
unify SimpleData for std::vector and lib::SegmentedVector
razdoburdin Oct 23, 2026
14e8c54
Merge branch 'main' into dev/razdoburdin/concurent_unification
razdoburdin Oct 23, 2026
3aa21af
unify save and load for concurrent::graph and vamana::graph
razdoburdin Oct 23, 2026
9681b59
Merge branch 'main' into dev/razdoburdin/concurent_unification
razdoburdin Oct 26, 2026
22f69c9
Merge branch 'dev/razdoburdin/concurent_unification' of https://githu…
razdoburdin Oct 26, 2026
f3ff8ec
reuse vamana::OptionalTracker
razdoburdin Oct 26, 2026
05eabf1
unify save,load and callibrate for MutableVamana
razdoburdin Oct 26, 2026
58b941e
change IDTranslator type in c bindings
razdoburdin Oct 26, 2026
ceb8e81
modify comments; remove unused includes; minor style changes
razdoburdin Oct 26, 2026
b1c5d35
Merge branch 'main' into dev/razdoburdin/concurent_unification
razdoburdin Oct 27, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion bindings/c/src/dispatcher_concurrent_vamana.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
#include <svs/concurrent/graph.h>
#include <svs/concurrent/spinlock.h>
#include <svs/core/distance.h>
#include <svs/core/translation.h>
#include <svs/index/vamana/build_params.h>
#include <svs/orchestrators/concurrent_dynamic_vamana.h>

Expand Down Expand Up @@ -111,7 +112,7 @@ struct ConcurrentVamanaFlavor {
);
svs::data::copy(src_graph.get_data(), graph.get_data());

auto translator = cc::IDTranslator{};
auto translator = svs::IDTranslator{};
translator.insert(external_ids, internal_ids);
auto concurrent_status = std::vector<cc::SlotMetadata>();
concurrent_status.reserve(status.size());
Expand Down
4 changes: 2 additions & 2 deletions bindings/c/src/dispatcher_dynamic_vamana_copy.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -91,8 +91,8 @@ struct RegularVamanaFlavor {

auto translator = svs::IDTranslator{};
translator.insert(external_ids, internal_ids);
svs::index::vamana::detail::VamanaStateLoader state_loader{
config, std::move(translator), std::move(status)};
svs::index::vamana::detail::VamanaStateLoader<svs::index::vamana::SlotMetadata>
state_loader{config, std::move(translator), std::move(status)};

return svs::DynamicVamana::assemble<float>(
std::move(state_loader),
Expand Down
15 changes: 10 additions & 5 deletions include/svs/concepts/graph.h
Original file line number Diff line number Diff line change
Expand Up @@ -132,15 +132,20 @@ template <ImmutableMemoryGraph G> using index_type_t = typename G::index_type;
/// @ingroup graph_concept_entry
/// @brief Concept modeling mutable in-memory graphs.
///
/// @tparam T Graph type to check.
/// @tparam AddEdgeReturn Required conversion target for the result of ``add_edge``.
/// Defaults to ``size_t``, representing the source vertex's resulting out degree.
/// A different target type may express an insertion status instead.
///
/// @code{.cpp}
/// template <typename T>
/// template <typename T, typename AddEdgeReturn = size_t>
/// concept MemoryGraph = requires(T& g, const T& const_g) {
/// // Add an edge to the graph.
/// // Must return the out degree of `src` after adding the edge `src -> dst`.
/// // With the default return type, return the out degree of `src` after insertion.
/// // If adding the edge would result in the graph exceeding its maximum degree,
/// // implementations are free to not add this edge.
/// requires requires(index_type_t<T> src, index_type_t<T> dst) {
/// { g.add_edge(src, dst) } -> std::convertible_to<size_t>;
/// { g.add_edge(src, dst) } -> std::convertible_to<AddEdgeReturn>;
/// };
///
/// // Completely clear the adjacency list for vertex ``i``.
Expand All @@ -160,11 +165,11 @@ template <ImmutableMemoryGraph G> using index_type_t = typename G::index_type;
/// };
/// @endcode
///
template <typename T>
template <typename T, typename AddEdgeReturn = size_t>
concept MemoryGraph = requires(T& g, const T& const_g) {
// Adding an edge.
requires requires(index_type_t<T> src, index_type_t<T> dst) {
{ g.add_edge(src, dst) } -> std::convertible_to<size_t>;
{ g.add_edge(src, dst) } -> std::convertible_to<AddEdgeReturn>;
};

// Clear adjacency list.
Expand Down
Loading
Loading