Releases: Noelware/violet
26.07.03
Noelware.Violet.Experimental
- [own] Add type traits for
Weak<T>(@auguwu) - [own] Add DynamicCast, StaticCast, and ConstCast for
Own<T>to act like C++'sstd::dynamic_pointer_cast,std::static_pointer_cast, andstd::const_pointer_cast. `@auguwu) - [own] Add ==, !=, and <=> operators for
Own<T>(@auguwu) - [own] Add NoOpDeleter deleter (@auguwu)
Noelware.Violet.Experimental.Time
- [duration] Added ToString and specialize
std::formatter(@auguwu) - Document which version what object was added (@auguwu)
Git History: 26.07.02...26.07.03
Bazel
As of 21/01/26, we plans on uploading all Noelware.Violet frameworks onto the BCR and our own registry (
https://bzl.noelware.cloud). If either are available, prefer using--registry=https://bzl.noelware.cloud.
bazel_dep(name = "violet", version = "26.07.03")
archive_override(
module_name = "violet",
integrity = "sha256-iH1sAlXANCIWd6RSBOFEfdkk58J0mljOADgmbA0GpVc=",
urls = [
# "https://artifacts.noelware.org/bazel-registry/violet/26.07.03/bazeldist.tgz",
"https://github.com/Noelware/violet/releases/download/26.07.03/bazeldist.tgz",
]
)Meson
subprojects/violet.wrap:
[wrap-file]
directory = violet-26.07.03
source_url = https://github.com/Noelware/violet/releases/download/26.07.03/mesondist.tgz
source_filename = mesondist.tgz
source_hash = 10a6c44c87e6c92177a88a1264e41716a27b62caca85d6bf9129eb6f25c99449
lead_directory_missing = true
[provide]
violet = violet_dep
violet_experimental = violet_experimental_dep
violet_io = violet_io_dep
violet_filesystem = violet_filesystem_dep
violet_experimental_threading = violet_experimental_threading_dep
violet_io_experimental = violet_io_experimental_dep
violet_terminal = violet_terminal_dep
violet_anyhow = violet_anyhow_depCMake
As of this release, CMake distribution is not available~
GN
As of this release, GN distribution is not available~
26.07.2
Noelware.Violet
- Add include guard in
Traits.h(@auguwu)
Git History: 26.07.01...26.07.02
Bazel
As of 21/01/26, we plans on uploading all Noelware.Violet frameworks onto the BCR and our own registry (
https://bzl.noelware.cloud). If either are available, prefer using--registry=https://bzl.noelware.cloud.
bazel_dep(name = "violet", version = "26.07.02")
archive_override(
module_name = "violet",
integrity = "sha256-UTDY2/+3im9LJShBFwQrMvujk7CD0Fs9pE0AvATxivE=",
urls = [
# "https://artifacts.noelware.org/bazel-registry/violet/26.07.02/bazeldist.tgz",
"https://github.com/Noelware/violet/releases/download/26.07.02/bazeldist.tgz",
]
)Meson
subprojects/violet.wrap:
[wrap-file]
directory = violet-26.07.02
source_url = https://github.com/Noelware/violet/releases/download/26.07.02/mesondist.tgz
source_filename = mesondist.tgz
source_hash = 326788bee96952c6e554ec4dfe2dc66e1b3f093064eb1b891a64bd15271a0977
lead_directory_missing = true
[provide]
violet = violet_dep
violet_experimental = violet_experimental_dep
violet_io = violet_io_dep
violet_filesystem = violet_filesystem_dep
violet_experimental_threading = violet_experimental_threading_dep
violet_io_experimental = violet_io_experimental_dep
violet_terminal = violet_terminal_dep
violet_anyhow = violet_anyhow_depCMake
As of this release, CMake distribution is not available~
GN
As of this release, GN distribution is not available~
26.07.01
Noelware.Violet
- Fix compilation error in
Runtime/Info.hheader (@auguwu)
Git History: 26.07...master
Bazel
As of 21/01/26, we plans on uploading all Noelware.Violet frameworks onto the BCR and our own registry (
https://bzl.noelware.cloud). If either are available, prefer using--registry=https://bzl.noelware.cloud.
bazel_dep(name = "violet", version = "26.07.01")
archive_override(
module_name = "violet",
integrity = "sha256-Fb+wDPRSpWZmE27MQduy3XNfVGWMXLrKWPQJ1kZCU2g=",
urls = [
# "https://artifacts.noelware.org/bazel-registry/violet/26.07.01/bazeldist.tgz",
"https://github.com/Noelware/violet/releases/download/26.07.01/bazeldist.tgz",
]
)Meson
subprojects/violet.wrap:
[wrap-file]
directory = violet-26.07.01
source_url = https://github.com/Noelware/violet/releases/download/26.07.01/mesondist.tgz
source_filename = mesondist.tgz
source_hash = 8215bf0ff6f52705e5029502b370451dcb70a2e2e9afcf9630bac27d01a07dcc
lead_directory_missing = true
[provide]
violet = violet_dep
violet_experimental = violet_experimental_dep
violet_io = violet_io_dep
violet_filesystem = violet_filesystem_dep
violet_experimental_threading = violet_experimental_threading_dep
violet_io_experimental = violet_io_experimental_dep
violet_terminal = violet_terminal_dep
violet_anyhow = violet_anyhow_depCMake
As of this release, CMake distribution is not available~
GN
As of this release, GN distribution is not available~
26.07
- breaking: Merge
Noelware.Violet.Subprocessinto the main repository. Everything is now available under//violet/subprocess
rather than a separate framework package. (@auguwu) - breaking:
VIOLET_DEPRECATED/VIOLET_DEPRECATED_BECAUSEnow take the version as a string literal (e.g."26.07") instead of a bare token; the previous form silently produced malformed deprecation messages (@auguwu) - Some classes, methods, typedefs, functions, etc. is marked with what versions they were introduced. Also, stablization points for experimental frameworks. (@auguwu)
- Remove violet::experimental::SmolString, now use violet::SmolString (@auguwu)
Noelware.Violet
- breaking: Removed
ThreadSafetytemplate paramter inCancellableDeferand addedLocalCancellableDeferinstead (@auguwu) - breaking: Removed more deprecated macros (@auguwu)
- Added RefCnt and RefCntTraits, a way to externally provide reference counting (@auguwu)
- Added violet::Drop<T>, a no-op sink to deliberately consume and destroy a value (@auguwu)
- Added VIOLET_DISALLOW_COPY_SINCE macro, for deleting copy operations with a
NOELDOC_SINCEannotation (@auguwu) - [events] Disallow copy and move on events::Emitter<Event> (@auguwu)
- [events] Allow persisted guards to cleanup itself rather than doing it manually (@auguwu)
- [support/demangle] Added initial support for MSVC C++'s ABI but is unavailable. This will properly be available once Windows support is available (@auguwu)
- [support/demangle] Added getting the demangled C++ exception type if we are in a
catch (...)block (@auguwu) - [container/optional] Allow T in
Optionalto have non-copyable and non-movable types (@auguwu) - [container/optional] Remove Value() accessor and operator== from
Some<T>(@auguwu) - [container/optional] Disallow copy and move operations if
Tis not copy or movable (@auguwu) - [container/result] Remove Value() accessor and operator== from
Ok<T>(@auguwu)
Noelware.Violet.IO
- Add source location tracking for OS-level errors (@auguwu)
- Disallow copies on FileDescriptor (@auguwu)
- Add FileDescriptor::Release(), which will release the descriptor to the caller (@auguwu)
- FileDescriptor is now non-copyable (@auguwu)
- FileDescriptor is now from 16 bytes to 4 bytes on Unix platforms, the
SharedPtr<Impl>indirection is gone and the descriptor is stored inline (@auguwu) - Add
operator<<(std::ostream&, FileDescriptor).ToString()format changed fromFileDescriptor(<id>)tofd(<id>)(@auguwu) - On Windows,
FileDescriptor::value_typeis nowHANDLErather thanvoid*(@auguwu)
Noelware.Violet.Filesystem
- breaking: Deprecate the free
filesystem::Metadata(PathRef, bool followSymlinks)function in favour ofMetadata::For(path, SymlinkResolution)(@auguwu) - Add Metadata::For overloads for an open
FileDescriptor, a(dirfd, path)pair (resolved viafstatat), andPathRef(@auguwu) - Add SymlinkResolution enum (
Follow/NoFollow) to make symlink behaviour explicit at call sites (@auguwu) - Extend Metadata on Unix with
Inode,Device,DeviceMajor,DeviceMinor,Rdev,RdevMajor,RdevMinor,UserID,GroupID, andHardLinks(@auguwu) - Add Mode::GroupCanRead / GroupCanWrite / GroupCanExecute, which had been missing from the POSIX mode accessors (@auguwu)
- Add BasePath::WithCStr, which invokes a callable with a NUL-terminated view of the path, borrowing the existing storage when possible and falling back to a stack buffer or temporary
Stringotherwise (@auguwu) DirsandWalkDirsnow derive fromIterator<...>, are non-copyable but move-constructible, and expose StopTraversing() to end iteration early (@auguwu)WalkDirsno longer silently swallows directories it cannot descend into, the failingopenatsurfaces as anio::Erroritem on the nextNext()call (@auguwu)ReadDir,SetWorkingDir, andFile::Openroute their paths throughWithCStr, removing the implicitstatic_cast<CStr>(path)copies (@auguwu)filesystem::Copyon Linux now falls back to a userspace read/write loop whencopy_file_rangeis unusable (cross-filesystem copies on kernels < 5.3 returningEXDEV, sandboxes that block the syscall withENOSYS, andEINVAL/EOPNOTSUPP/EPERM/EBADFfrom certain filesystems and pseudo-files), instead of failing outright (@auguwu)filesystem::Copyon Linux now mirrors the source file's permission bits onto the destination rather than hardcoding0644(@auguwu)- Fix
RemoveAllDirsfailing withENOTEMPTY: directories are now removed after their contents (deepest-first) instead of on first visit during the pre-order walk (@auguwu)
Noelware.Violet.Filesystem.Experimental
- Added Dir, analogus to
violet::filesystem::Filebut for directories (@auguwu)
Noelware.Violet.Subprocess (from 26.06)
ChildStdin,ChildStdout, andChildStderrare now non-default-constructible, non-copyable, and move-only, they wrap an owningFileDescriptorand the previous implicit copies were unsound (@auguwu)- [macOS]
Child::Waitnow falls back towaitpidwhenkeventregistration fails withESRCH(the child already exited betweenSpawnandWait), instead of surfacing the error (@auguwu)
Noelware.Violet.Experimental
- Added violet::experimental::Slice, which is a
std::array-like container (@auguwu)
Noelware.Violet.Experimental.Synchronization
- Added violet::experimental::sync::ReadWriteLock, which is a shared-or-exclusive mutex (@auguwu)
- Added violet::experimental::sync::WaitGroup (@auguwu)
Git History: 26.06.05...26.07
Bazel
As of 21/01/26, we plans on uploading all Noelware.Violet frameworks onto the BCR and our own registry (
https://bzl.noelware.cloud). If either are available, prefer using--registry=https://bzl.noelware.cloud.
bazel_dep(name = "violet", version = "26.07")
archive_override(
module_name = "violet",
integrity = "sha256-/oVlbeFm40oTS/ddvu81YNCq3zyS+CCyKDyR7k2eWlY=",
urls = [
# "https://artifacts.noelware.org/bazel-registry/violet/26.07/bazeldist.tgz",
"https://github.com/Noelware/violet/releases/download/26.07/bazeldist.tgz",
]
)Meson
subprojects/violet.wrap:
[wrap-file]
directory = violet-26.07
source_url = https://github.com/Noelware/violet/releases/download/26.07/mesondist.tgz
source_filename = mesondist.tgz
source_hash = 2f9dbc69277eda70564ff985ae2e5f4210d9615ebc834079f784ed564b55396d
lead_directory_missing = true
[provide]
violet = violet_dep
violet_experimental = violet_experimental_dep
violet_io = violet_io_dep
violet_filesystem = violet_filesystem_dep
violet_experimental_threading = violet_experimental_threading_dep
violet_io_experimental = violet_io_experimental_dep
violet_terminal = violet_terminal_dep
violet_anyhow = violet_anyhow_depCMake
As of this release, CMake distribution is not available~
GN
As of this release, GN distribution is not available~
26.06.05
Noelware.Violet
- Move type traits and concepts into their own header:
violet/Traits.h(still re-exported when usingviolet/Violet.hheader) (@auguwu) - Optional: Allow non-assignable copy/move operations to be available. (@auguwu)
- This disallowed
Optional<std::pair<const K, V>>(like Abseil's absl::flat_hash_map) when building iterators.
- This disallowed
Noelware.Violet.Experimental
- New types: Mutex (MutexLock, Condvar), Synchronized, and Own. (@auguwu)
- Violet can use Abseil's Mutex types if provided via
--@violet//buildsystem/bazel/flags:abseil=True. We set this toFalse; Noelware interally uses Abseil but for consumers that don't want to depend on Abseil. - Own is a version of std::shared_ptr that works with shared base types that point to derived types and other fixes.
- Violet can use Abseil's Mutex types if provided via
- New integral-based functions arrive from Eous' codebase. (@auguwu)
- Deprecate VIOLET_HAS_EXCEPTIONS, VIOLET_USE_RTTI, VIOLET_IS_LITTLE_ENDIAN, and VIOLET_IS_BIG_ENDIAN for VIOLET_FEATURE_{EXCEPTIONS|RTTI} / VIOLET_PLATFORM_{LITTLE|BIG}_ENDIAN for consistency (@auguwu)
- Add anyhow::Error::ToString (@auguwu)
Noelware.Violet.Experimental.Time
This is a brand new framework that was brought from Eous' codebase.
This comes with Duration, TimePoint, and Instant for time manipulation and parsing that bridges C++'s std::chrono. Also provides Clock and FakeClock, which can be used instead of std::chrono::{system|steady}_clock. FakeClock's primary use is for tests.
Noelware.Violet.Filesystem
Git History: 26.06.04...26.06.05
Bazel
As of 21/01/26, we plans on uploading all Noelware.Violet frameworks onto the BCR and our own registry (
https://bzl.noelware.cloud). If either are available, prefer using--registry=https://bzl.noelware.cloud.
bazel_dep(name = "violet", version = "26.06.05")
archive_override(
module_name = "violet",
integrity = "sha256-p2+J27hNx3mJhHTg8mCPohse8C7oWB9NLhBxSj58+sA=",
urls = [
# "https://artifacts.noelware.org/bazel-registry/violet/26.06.05/bazeldist.tgz",
"https://github.com/Noelware/violet/releases/download/26.06.05/bazeldist.tgz",
]
)Meson
subprojects/violet.wrap:
[wrap-file]
directory = violet-26.06.05
source_url = https://github.com/Noelware/violet/releases/download/26.06.05/mesondist.tgz
source_filename = mesondist.tgz
source_hash = 4a2ffee6ff3033e357f1e8ac0b0eced6ff8f451d06df4763b9d00854e83b6379
lead_directory_missing = true
[provide]
violet = violet_dep
violet_experimental = violet_experimental_dep
violet_io = violet_io_dep
violet_filesystem = violet_filesystem_dep
violet_experimental_threading = violet_experimental_threading_dep
violet_io_experimental = violet_io_experimental_dep
violet_terminal = violet_terminal_dep
violet_anyhow = violet_anyhow_depCMake
As of this release, CMake distribution is not available~
GN
As of this release, GN distribution is not available~
26.06.04
This is a patch revision, nothing much has changed than the Meson distribution.
Git History: 26.06.03...26.06.04
Bazel
As of 21/01/26, we plans on uploading all Noelware.Violet frameworks onto the BCR and our own registry (
https://bzl.noelware.cloud). If either are available, prefer using--registry=https://bzl.noelware.cloud.
bazel_dep(name = "violet", version = "26.06.04")
archive_override(
module_name = "violet",
integrity = "sha256-m6lMMBvyzEdIfLdh8ZbBZndJSehDTuczEdj1Gw+c6e0=",
urls = [
# "https://artifacts.noelware.org/bazel-registry/violet/26.06.04/bazeldist.tgz",
"https://github.com/Noelware/violet/releases/download/26.06.04/bazeldist.tgz",
]
)Meson
subprojects/violet.wrap:
[wrap-file]
directory = violet-26.06.04
source_url = https://github.com/Noelware/violet/releases/download/26.06.04/mesondist.tgz
source_filename = mesondist.tgz
source_hash = 86510d73496856a49f3cf453e5643acc0cec089039d80336b701477da91fa7b2
lead_directory_missing = true
[provide]
violet = violet_dep
violet_experimental = violet_experimental_dep
violet_io = violet_io_dep
violet_filesystem = violet_filesystem_dep
violet_experimental_threading = violet_experimental_threading_dep
violet_io_experimental = violet_io_experimental_dep
violet_terminal = violet_terminal_dep
violet_anyhow = violet_anyhow_depCMake
As of this release, CMake distribution is not available~
GN
As of this release, GN distribution is not available~
26.06.03
This is a patch revision, nothing much has changed than the Meson distribution.
Git History: 26.06.02...26.06.03
Bazel
As of 21/01/26, we plans on uploading all Noelware.Violet frameworks onto the BCR and our own registry (
https://bzl.noelware.cloud). If either are available, prefer using--registry=https://bzl.noelware.cloud.
bazel_dep(name = "violet", version = "26.06.03")
archive_override(
module_name = "violet",
integrity = "sha256-iWUZNFnYpB4iWZKpUC3sAQgAV332xHd886EqT4aGjOc=",
urls = [
# "https://artifacts.noelware.org/bazel-registry/violet/26.06.03/bazeldist.tgz",
"https://github.com/Noelware/violet/releases/download/26.06.03/bazeldist.tgz",
]
)Meson
subprojects/violet.wrap:
[wrap-file]
directory = violet-26.06.03
source_url = https://github.com/Noelware/violet/releases/download/26.06.03/mesondist.tgz
source_filename = mesondist.tgz
source_hash = 2d8528353bb2b2c8ce9b6ddbb792f7325acdd66ac363887b711845a4bed419da
lead_directory_missing = true
[provide]
violet = violet_dep
violet_experimental = violet_experimental_dep
violet_io = violet_io_dep
violet_filesystem = violet_filesystem_dep
violet_experimental_threading = violet_experimental_threading_dep
violet_io_experimental = violet_io_experimental_dep
violet_terminal = violet_terminal_dep
violet_anyhow = violet_anyhow_depCMake
As of this release, CMake distribution is not available~
GN
As of this release, GN distribution is not available~
26.06.02
Meson
- Fix issues where platform-specific defines were not being propagated (@auguwu)
- Meson is now fully supported as a secondary buildsystem (@auguwu)
- Changelogs in releases will now include a way to add Noelware.Violet as a Meson wrapdb file
- There is a new tarball (mesondist.tgz) that should be used over the Git repository or release tarballs as it strips all Bazel and CMake configurations.
Noelware.Violet.Experimental
- Add violet::experimental::Any, a new type originated from Noelware's Eous project that is type-erased, RTTI-friendly type over
std::any(@auguwu)
Git History: 26.06.01...26.06.02
Bazel
As of 21/01/26, we plans on uploading all Noelware.Violet frameworks onto the BCR and our own registry (
https://bzl.noelware.cloud). If either are available, prefer using--registry=https://bzl.noelware.cloud.
bazel_dep(name = "violet", version = "26.06.02")
archive_override(
module_name = "violet",
integrity = "sha256-GVRBd2MQakY6nGDQmGKNl+G9Fb4Y6V8jlHTpZ/a9Wnw=",
urls = [
# "https://artifacts.noelware.org/bazel-registry/violet/26.06.02/bazeldist.tgz",
"https://github.com/Noelware/violet/releases/download/26.06.02/bazeldist.tgz",
]
)Meson
subprojects/violet.wrap:
[wrap-file]
source_url = https://github.com/Noelware/violet/releases/download/26.06.02/mesondist.tgz
source_hash = c12ffda1fec0fc757abea59d5d6f51a350e0d18fd078fef07dabe15d1e19552e
[provide]
violet = violet_dep
violet_experimental = violet_experimental_dep
violet_io = violet_io_dep
violet_filesystem = violet_filesystem_dep
violet_experimental_threading = violet_experimental_threading_dep
violet_io_experimental = violet_io_experimental_dep
violet_terminal = violet_terminal_dep
violet_anyhow = violet_anyhow_depCMake
As of this release, CMake distribution is not available~
GN
As of this release, GN distribution is not available~
26.06.01
Noelware.Violet
- SmolString: Expose
DataandSizeso that NTTP works (@auguwu)
Noelware.Violet.Filesystem
- Remove deprecated parameters in
OpenOptions(@auguwu)
Git History: 26.06...26.06.01
Bazel
As of 21/01/26, we have plans on uploading all Noelware.Violet frameworks onto the BCR and our own (
https://bzl.noelware.cloud). It could exist right now, if you are, you can use--registry=https://bzl.noelware.cloudand all frameworks will be available.
bazel_dep(name = "violet", version = "26.06.01")
archive_override(
module_name = "violet",
integrity = "sha256-usY8gpBnrQouFn/y3MdASeltZ7HULsnQcZ9ymwAjZBY=",
urls = [
# "https://artifacts.noelware.org/bazel-registry/violet/26.06.01/bazeldist.tgz",
"https://github.com/Noelware/violet/releases/download/26.06.01/bazeldist.tgz",
]
)CMake
Right now, it is not the best to use the frameworks in a CMake environment! ehehe...~
Meson
Using the frameworks in a Meson environment is not ready yet!
GN ("Generate Ninja")
Using the frameworks in a GN environment is not ready yet!
26.06
- (breaking) Remove the old, deprecated platform/compiler/buildsystem/architecture-based macros that were deprecated in 26.05.05 (@auguwu)
- (breaking) Deprecate
VIOLET_{M|T|UB|A}SANforVIOLET_SANITIZER_{ADDRESS|MEMORY|THREAD|UNDEFINED}, will be removed in a 26.07 release (@auguwu)
CMake
- Improve interface around the CMake build. Getting closer to codegen from Bazel to CMake targets. (@auguwu)
Meson
- Initial support for Meson. (@auguwu)
Noelware.Violet
- Promote violet::experimental::SmolString to Noelware.Violet (now as
violet::SmolString) (@auguwu) - Iterator: Add forwarded declarations for all iterable combinators (@auguwu)
- Iterator: Make the return type for combinators more obvious (@auguwu)
- Iterator: Add documentation for all iterable combinators (@auguwu)
- Iterator: Add
underlying_iteratorandunderlying_iterator_ttype trait (@auguwu) - Optional: Add
Optional::operator<=>forviolet::Nothing,violet::Optional,std::optional, andT(@auguwu)
Noelware.Violet.Filesystem
- Fix a issue where when using
WalkDirs/Dirsfails to compile (@auguwu)
Git History: 26.05.08...26.06
Bazel
As of 21/01/26, we have plans on uploading all Noelware.Violet frameworks onto the BCR and our own (
https://bzl.noelware.cloud). It could exist right now, if you are, you can use--registry=https://bzl.noelware.cloudand all frameworks will be available.
bazel_dep(name = "violet", version = "26.06")
archive_override(
module_name = "violet",
integrity = "sha256-DP+ytt4x7QChhS6BA5LsK19gb8M0B42jIryl57Vz3Qo=",
urls = [
# "https://artifacts.noelware.org/bazel-registry/violet/26.06/bazeldist.tgz",
"https://github.com/Noelware/violet/releases/download/26.06/bazeldist.tgz",
]
)CMake
Right now, it is not the best to use the frameworks in a CMake environment! ehehe...~
Meson
Using the frameworks in a Meson environment is not ready yet!
GN ("Generate Ninja")
Using the frameworks in a GN environment is not ready yet!