1378 Commits

Author SHA1 Message Date
Nik Bougalis
ce3f0fcc23 Add true partitioning support to TaggedCache:
The primary change introduced in this commit is partitioning of
the `TaggedCache`, with each partition being indepedent of each
other, making it possible to potentially perform multiple cache
operations in parallel. In particular, the `sweep` operation is
now parallelized by default on systems with at least four cores
present.

The `TaggedCache` could also be instantiated in 'key-only' mode
which complicated the interface significantly but was only used
by a single consumer (the `FullBelowCache`). This commit splits
the 'key-only' functionality of `TaggedCache`, and incorporates
directly into `FullBelowCache`, resulting in simple and cleaner
interfaces for both `TaggedCache` and `FullBelowCache` but at a
cost: some code duplication.

Lastly, this commit includes a medley of changes, including the
restructuring of `Transaction`, reducing its size by 48 bytes.
2023-09-24 18:36:15 -07:00
Nik Bougalis
f57800c645 Refactor the JobQueue infrastructure and improve load tracking:
This commit cleans up and modernizes the JobQueue but does not change
the queueing logic. It focuses on simplifying the code by eliminating
awkward code constructs, like "invalid jobs" and the need for default
constructors.

It leverages modern C++ to initialize tables and data structures at
compile time and replaces `std:map` instances with directly indexed
arrays.

Lastly, it restructures the load tracking infrastructure and reduces
the need for dynamic memory allocations by supporting move semantics
and value types.
2023-09-24 18:32:29 -07:00
Nik Bougalis
3379b4c950 Optimize thread pool implementation:
The existing thread pool code uses several layers of indirection which
uses a custom lock-free stack, and offers functionality that supports
features that are never used (e.g. the ability to dynamically adjust
the number of threads in the pool).

This refactoring aims to simplify the code, making it easier to reason
about (although lock-free multi-threaded code is always tricky) what
is happening, and reduce the latency of the thread pool internals.
2023-09-24 18:32:29 -07:00
Denis Angell
f4e738ac64 claim reward tests (#105) 2023-09-23 11:17:37 +02:00
Richard Holland
d6a0746f99 make mac-specific libraries optional 2023-09-19 12:58:48 +00:00
Denis Angell
aa6d05c8b9 patch m1/llvm14 (#50)
* patch wasm cmake

* patch UNL Report

* patch change

* patch import

* patch invoke

* patch xahau genesis test
2023-09-19 14:41:55 +02:00
Richard Holland
0a291371c9 fix levelisation for soci, more L2 governance tests 2023-09-19 10:36:45 +00:00
Denis Angell
89df87dec8 UNL Report tests (#100)
* Update Change.cpp

* add UNLReport Tests

* remove comments
2023-09-19 11:25:41 +02:00
Denis Angell
fb44359988 add invoke tests 2023-09-14 11:00:16 +02:00
Richard Holland
11b9a69f72 add optional ACL to build 2023-08-05 09:44:34 +00:00
Denis Angell
0c4441ac36 remove acl and fix import test cases (json) 2023-08-01 19:56:23 +02:00
RichardAH
0454beaf76 Merge branch 'dev' into import-qc 2023-08-01 13:21:34 +02:00
Richard Holland
264f25c2a6 change to boost::filesystem to support older compilers 2023-08-01 07:48:11 +00:00
Richard Holland
f89bd966ec refactor XahauGenesis slightly, start test cases 2023-07-18 13:33:44 +00:00
RichardAH
b64650af71 Merge pull request #70 from Xahau/governance_hook_l2
Governance hook l2
2023-06-26 15:10:46 +02:00
Richard Holland
2211d6f851 Revert "patch: m1/llvm4"
This reverts commit 41461bdddc.
2023-06-26 12:58:53 +00:00
Denis Angell
f42d9124df setup import test 2023-06-15 23:01:09 +00:00
Denis Angell
41461bdddc patch: m1/llvm4 2023-06-15 23:01:09 +00:00
Richard Holland
1ae08afb02 genesis mint working 2023-06-05 12:08:59 +00:00
RichardAH
131bd9f4b3 ttImport (#65)
Add support for Burn2Mint and key import from original XRPL network in new txn type: ttIMPORT. Needs further testing.
2023-05-22 15:06:05 +02:00
Denis Angell
dfc95ec291 Sync CTID (#53)
* ctid tests
2023-04-06 17:01:12 +00:00
Richard Holland
311d0b8bf1 Revert "Use the Conan package manager (#4367)"
This reverts commit c3a9f3dbf3.
2023-04-06 09:46:00 +00:00
Richard Holland
a5ca117ff6 Merge remote-tracking branch 'ripple/develop' into dev 2023-04-06 09:36:24 +00:00
Elliot Lee
46167d1c46 Add link to BUILD.md: (#4450)
In the release notes (current and historical), there is a link to the
`Builds` directory. By creating `Builds/README.md` with a link to
`BUILD.md`, it is easier to find the build instructions.
2023-03-28 15:55:53 -07:00
John Freeman
d7725837f5 build: add interface library libxrpl: (#4449)
Make it easy for projects to depend on libxrpl by adding an `ALIAS`
target named `xrpl::libxrpl` for projects to link.

The name was chosen because:

* The current library target is named `xrpl_core`. There is no other
  "non-core" library target against which we need to distinguish the
  "core" library. We only export one library target, and it should just
  be named after the project to keep things simple and predictable.
* Underscores in target or library names are generally discouraged.
* Every target exported in CMake should be prefixed with the project
  name.

By adding an `ALIAS` target, existing consumers who use the `xrpl_core`
target will not be affected.

* In the future, there can be a migration plan to make `xrpl_core` the
  `ALIAS` target (and `libxrpl` the "real" target, which will affect the
  filename of the compiled binary), and eventually remove it entirely.

Also:

* Fix the Conan recipe so that consumers using Conan import a target
  named `xrpl::libxrpl`. This way, every consumer can use the same
  instructions.
* Document the two easiest methods to depend on libxrpl. Both have been
  tested.
* See #4443.
2023-03-22 17:21:03 -07:00
John Freeman
7745c72b2c docs: update build instructions: (#4381)
* Remove obsolete build instructions.
* By using Conan, builders can choose which dependencies specifically to
  build and link as shared objects.
* Refactor the build instructions based on the plan in #4433.
2023-03-22 12:02:42 -07:00
Elliot Lee
acb373280b Merge branch 'master' (1.10.1) into develop 2023-03-22 11:13:36 -07:00
Michael Legleux
da18c86cbf Build packages with Ubuntu 18.04
Restores Ubuntu 18.04 packages
Update docker images to use Conan
2023-03-21 11:13:03 -07:00
Nik Bougalis
150d4a47e4 refactor: optimize NodeStore object conversion: (#4353)
When writing objects to the NodeStore, we need to convert them from
the in-memory format to the binary format used by the node store.

The conversion is handled by the `EncodedBlob` class, which is only
instantiated on the stack. Coupled with the fact that most objects
are under 1024 bytes in size, this presents an opportunity to elide
a memory allocation in a critical path.

This commit also simplifies the interface of `EncodedBlob` and
eliminates a subtle corner case that could result in dangling
pointers.

These changes are not expected to cause a significant reduction in
memory usage. The change avoids the use of a `std::shared_ptr` when
unnecessary and tries to use stack-based memory allocation instead
of the heap whenever possible.

This is a net gain both in terms of memory usage (lower
fragmentation) and performance (less work to do at runtime).
2023-03-16 15:00:07 -07:00
Michael Legleux
e13676f709 Update package building scripts and images to use Conan (#4435)
* Set version to 1.10.0-rc3
* Test on Fedora 37
* Dependency builds are handled by Conan
2023-02-28 14:17:07 -08:00
Elliot Lee
5ec8783d35 README: Update "Build from source" section (#4426)
Fix #2987
2023-02-21 15:40:09 -08:00
Howard Hinnant
0ee63b7c7b AMM Add Number class and associated algorithms 2023-02-07 15:43:28 -08:00
Richard Holland
14dee2d976 Merge branch 'icv2-super' into dev 2023-02-06 10:35:57 +00:00
Denis Angell
9effcc3924 add testfile and cmake 2023-02-06 09:05:26 +00:00
Richard Holland
fbafb72262 first version of URIToken amendment 2023-01-27 11:17:43 +00:00
Scott Schurr
b19287c6d0 Add a unit test for invalid memos (#4287) 2023-01-23 22:04:35 -05:00
Richard Holland
8422947375 Merge branch 'icv2' into dev 2023-01-13 11:13:50 +00:00
Scott Schurr
61d8c7a85b Add a unit test for invalid memos (#4287) 2023-01-04 15:45:19 -08:00
seelabs
eb6d770981 Support for boost 1.80.0:
Boost intrusive renamed the `comp()` function -> `get_comp()`
2022-12-23 13:09:30 +00:00
Michael Legleux
72ec634a25 Pin postgres, zlib, krb5, libuv and cassandra to stable versions 2022-12-23 13:07:07 +00:00
John Freeman
fda9e9a7ee Fix Doxygen workflow (#4372) 2022-12-21 10:41:16 -08:00
Richard Holland
39ecdb6795 Add NetworkID field to Transaction common fields, enforced when network id > 1024 2022-12-19 16:48:40 +00:00
John Freeman
c3a9f3dbf3 Use the Conan package manager (#4367)
Introduces a conanfile.py (and a Conan recipe for RocksDB) to enable building the package with Conan, choosing more recent default versions of dependencies. It removes almost all of the CMake build files related to dependencies, and the configurations for Travis CI and GitLab CI. A new set of cross-platform build instructions are written in BUILD.md.

Includes example GitHub Actions workflow for each of Linux, macOS, Windows.

* Test on macos-12

We use the <concepts> library which was not added to Apple Clang until
version 13.1.6. The default Clang on macos-11 (the sometimes current
version of macos-latest) is 13.0.0, and the default Clang on macos-12 is
14.0.0.

Closes #4223.
2022-12-16 10:46:22 -08:00
Richard Holland
8a0635396a ttInvoke part 1 2022-12-16 13:40:23 +00:00
Richard Holland
44425f14f6 Balance Rewards amendment (compiling not tested) 2022-12-16 11:55:53 +00:00
Richard Holland
3107787cad more wasmedge build stuff 2022-12-13 13:52:59 +00:00
Richard Holland
26522c1427 fix wasmedge cmake 2022-12-13 12:37:30 +00:00
Richard Holland
b0ebd8e3eb update to wasmedge 0.11 (untested) 2022-12-13 10:19:08 +00:00
J. Scott Branson
004ec2d201 Update Linux Build Instructions (#4018)
* Removed a reference to the default number of workers varying based on whether a node has validation enabled. Workers default to the number of processor cores + 2: https://github.com/ripple/rippled/blob/develop/src/ripple/core/impl/JobQueue.cpp#L166

* Protobuf v2 and Ubuntu 16.04 are no longer supported.

* Updated protobuf version as v3 is now supported, fixed typos, automatically sent number of processors when building boost & rippled.
2022-11-28 13:49:38 -08:00
Ed Hennis
5d38e4cfbf Work around soci build issues 2022-10-13 15:44:49 -07:00