123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611 |
- Legend:
- - Bug fix
- + New feature
- * Changes
- ! Important
- 2024-02-05 __vic
- + logger: std::format support
- 2024-02-27 __vic
- * ascii.h: protection from isascii() macro
- * readonly_cstring: duplicated code removed
- 2024-02-16 __vic
- * type_traits.h:
- + conditional
- + conjunction, disjunction, negation
- 2023-10-20 __vic
- + __VIC_INLINE_CONSTEXPR_VAR
- - __VIC_SWAP_HEADER definition was invalid
- 2023-10-06 __vic
- + C++23 mode support
- * C++17 is used by default
- 2023-04-07 __vic
- + __VIC_IF_CONSTEVAL
- 2022-03-02 __vic
- - readonly_cstring: compare(const char *,readonly_cstring)
- 2022-02-21 __vic
- * throw_errno: it's enough to override only one function
- 2022-02-11 __vic
- * logger: fields layout reorganized to be more compact
- 2022-02-09 __vic
- + string_buffer: operator<<(string_buffer &&, T)
- 2022-01-14 __vic
- * windows::Event: constructor uses wide chars
- 2021-12-30 __vic
- + windows/window.h:
- + windows::Window
- + windows::MsgBox()
- + windows::MessageLoop(), windows::ProcessMessages()
- 2021-12-24 __vic
- + windows/dc.h:
- + windows::DC, windows::ClientDC, windows::PaintDC
- + windows/bitmap.h:
- + windows::Bitmap
- + windows/shadow_dc.h:
- + windows::ShadowDC
- 2021-12-23 __vic
- + windows/wait_cursor.h:
- + windows::WaitCursor
- 2021-12-07 __vic
- + string_ref: conversion from/to std::string_view
- + string_buffer supports std::string_view (via string_ref)
- * ascii::equal_icase() uses std::string_view if available
- 2021-12-06 __vic
- * string_utils.h:
- * starts_with(), ends_with() use std::string_view if available
- * trimmed()-functions use std::string_view if available
- 2021-12-03 __vic
- * logger:
- * use std::string_view if available
- + to_string_view(logger::severity)
- * str2num.h:
- + use [[nodiscard]]
- * use std::string_view if available
- 2021-11-30 __vic
- - fs.h: {path|file|dir}_exists() use ::FindFirstFile() API.
- ::GetFileAttributes() returns spurious errors like
- ERROR_SHARING_VIOLATION instead of file attributes
- 2021-11-19 __vic
- * type_traits.h: using std::remove_cvref in C++20 mode
- 2021-10-13 __vic
- * bits.h: msb_ones(), lsb_ones(), get_lsbs() are constexpr now
- 2021-10-04 __vic
- + memory.h: store_unaligned()
- 2021-06-11 __vic
- + logger: notice level
- 2021-05-03 __vic
- - bits.h: __VIC_ASSERT_UINT() in C++98 mode
- + algorithm.h:
- + skip_if_front(), skip_if_back()
- * skip_if_{front,back}() are used inside trim-functions
- 2021-04-30 __vic
- * sift() uses set_of_chars
- 2020-12-22 __vic
- + ascii.h: isblank(), isprint(), isgraph(), ispunct(), iscntrl()
- 2020-12-16 __vic
- + base16.h: base16::encode_byte_{lower|upper}()
- 2020-05-25 __vic
- * bits.h: MSVC++ __popcnt() can cause crash if not supported by CPU so
- isn't used by default. Define __VIC_POPCNT to use it
- 2020-05-21 __vic
- + windows/critical_section.h: CriticalSection(DWORD dwSpinCount)
- + windows/throw_last_error.h and windows::throw_last_error() are parts of
- the public API now
- 2020-02-24 __vic
- ! string_utils.h: Renamed:
- ! trim_left() -> trim_front()
- ! trim_right() -> trim_back()
- ! trimmed_left() -> trimmed_front()
- ! trimmed_right() -> trimmed_back()
- ! pad_left() -> pad_front()
- ! pad_right() -> pad_back()
- 2020-02-10 __vic
- * memory.h: load_unaligned(): fallback to std::memcpy() if no better
- alternatives
- ! Renamed object_pool -> fixed_vector
- 2020-01-31 __vic
- * windows::error::what() trims trailing whitespaces now
- 2020-01-28 __vic
- + throw_errno.h and throw_errno() are parts of the public API now
- ! defs.h: uninitialized/noinit removed
- 2019-12-24 __vic
- * logger: severity strings moved to the own object file
- 2019-12-19 __vic
- - str2num.h: signed_decimal_parser: out of buffer access if input string
- is "+" or "-"
- 2019-10-21 __vic
- + Support for compilers without any form of 64-bit integers (long long)
- 2019-07-02 __vic
- - string_utils.h: sift_if(): redundant past the end predicate check
- 2019-06-26 __vic
- + Workaround for Clang 3.9+ issue - __has_cpp_attribute(nodiscard) returns
- 1 even when used mode is C++14 or less
- 2019-06-21 __vic
- - "__VIC_NO_BUITLINS" was used instead of __VIC_NO_BUILTINS
- + test/bits_no_biltins.cpp
- + test/endian_no_builtins.cpp
- 2019-05-31 __vic
- + bits.h: ceil_log2(), floor_log2()
- 2019-05-22 __vic
- * bits.h:
- + ceil2(), floor2(), ispow2(), msb_position()
- * rotl()/rotr() use language types instead of cstdint typedefs
- 2019-05-21 __vic
- * Renamed __VIC_NO_GCC_BUITLINS -> __VIC_NO_BUITLINS
- + bits.h: popcount()
- 2019-05-06 __vic
- + windows/find_file.h:
- + windows::FindFile
- 2019-04-01 __vic
- * logger:
- + shrink_buffer()
- ! No autoshrink
- 2019-03-25 __vic
- - bits.h: UB on rot{l|r}(..., 0)
- 2019-03-13 __vic
- + memory.h:
- + load_unaligned()
- 2019-03-12 __vic
- + [[nodiscard]] support
- + endian.h: endian::to/from_big/little()
- 2019-02-13 __vic
- + endian.h:
- + endian
- + swab16(), swab32(), swab64()
- 2019-02-08 __vic
- + tchar.h: tchar::empty(), tchar::equal()
- 2019-02-05 __vic
- + doc: russian translation
- 2019-01-31 __vic
- * object_pool: renamed push() -> push_allocated()
- 2018-12-17 __vic
- + writers/null.h:
- + null_writer
- 2018-12-05 __vic
- * makefiles: /std option support since MS VC++ 15.8
- 2018-11-20 __vic
- * base64::decode(): no whitespaces skip
- 2018-11-14 __vic
- * stdio_file:
- * Renamed attach() -> attach_handle(), detach() -> detach_handle()
- + attach_handle() returns old value
- 2018-10-30 __vic
- + Handmade integers to text converters (to_text_append())
- 2018-10-24 __vic
- * Underlying type is specified for logger::severity
- 2018-10-08 __vic
- + readers, writers: make_...()
- + utf{8|16}: make_reader(), make_writer()
- + unicode.h: utf_transcode()
- + writers/iterator.h:
- + iterator_writer
- 2018-09-28 __vic
- + utf16/defs.h:
- + utf16::code_unit_t
- + utf16/status.h:
- + utf16::status
- + utf16::is_error(), utf16::throw_if_error()
- + utf16/exceptions.h:
- + utf16::bad_encoding and derivatives
- + utf16/reader.h:
- + utf16::reader
- + utf16/writer.h:
- + utf16::writer
- * fs.h: all paths are UTF-8 now
- 2018-09-27 __vic
- + unicode.h:
- + unicode_t
- + unicode_max, unicode_bom, unicode_replacement_char
- + utf8/defs.h:
- + utf8::is_continuation_byte()
- + utf8/status.h:
- + utf8::status
- + utf8::is_error(), utf8::throw_if_error()
- + utf8/exceptions.h:
- + utf8::bad_encoding and derivatives
- + utf8/reader.h:
- + utf8::reader
- + utf8/writer.h:
- + utf8::writer
- 2018-09-26 __vic
- * Readers:
- * Renamed range_reader[_n] -> iterator_reader[_n]
- * basic_string_reader is implemented using raw pointer +
- iterator_reader_n
- + position() function for memory readers
- 2018-09-19 __vic
- * defs.h: unitialized can't be constructed using just {}
- * logger:
- * Renamed accepts_*() -> *_visible()
- + class output
- + settings_t
- 2018-09-18 __vic
- + C++14 and C++17 modes support
- + set_of_chars: C++14 constexpr
- 2018-09-03 __vic
- * doc: make https://validator.w3.org/ happy
- * base16, base64: try_decode() added
- 2018-08-09 __vic
- * str2num.h: to_errno(number_parse_status) removed
- 2018-07-11 __vic
- + NMAKE makefile for Visual C++
- 2018-06-21 __vic
- * LLVM libc++ defines nullptr macro in C++98 mode
- 2018-06-06 __vic
- + __VIC_SCOPED_ENUM_BEGIN/END
- * logger: renamed message_severity -> severity_t
- + str2num.h: number_parse_status
- 2018-06-05 __vic
- * string_ref.h: basic_string_ref: operator== uses memcmp()
- 2018-05-21 __vic
- + doc: stable links for chapters
- * Renamed meta.h -> type_traits.h
- 2018-05-15 __vic
- * doc/document.dtd is deterministic now
- 2018-05-14 __vic
- + object_pool: full()
- 2018-05-07 __vic
- * Don't catch exceptions by value even in tests
- 2018-03-28 __vic
- * bits.h: lo/hi_nibble() return uint8_t instead of int
- 2018-01-26 __vic
- + Tests for readers
- + Tests for writers
- - readers/cstring.h: invalid code
- 2017-12-26 __vic
- + meta.h: index_sequence, make_index_sequence
- 2017-12-21 __vic
- + packon.h, packoff.h
- 2017-12-18 __vic
- * Using _beginthreadex() with MinGW too
- 2017-12-13 __vic
- * doc/html.xsl: more tolerant to retarded XSLT processors (oracle) TOC
- generation code
- 2017-12-12 __vic
- + waitable_event for C++98 mode too
- + thread.h:
- + thread
- + this_thread
- + get_id()
- + sleep_ms()
- + mutex.h:
- + mutex
- + mutex_lock
- + windows/event.h:
- + windows::Event
- 2017-12-08 __vic
- * meta.h:
- + remove_reference, remove_cvref
- + Template aliases for type transformers
- + waitable_event.h:
- + waitable_event for C++11 mode only
- 2017-12-07 __vic
- + GNU Make makefiles
- 2017-12-05 __vic
- * string_buffer can be compiled even when old compatible ABI is used by
- GNU libstdc++
- + Intel C++ 17.0+ compiler support
- 2017-11-29 __vic
- * windows/throw_last_error.h doesn't include windows.h
- 2017-11-28 __vic
- + string_utils.h: starts_with(), ends_with()
- 2017-11-14 __vic
- * to_text_append():
- - Small buffer for 8-byte long types
- - printf() "ll" length modifier is not always available
- * Using snprint() in C++11 mode
- 2017-09-21 __vic
- * ascii.h:
- * Moved from bits.h:
- * to_hex_digit_upper() -> ascii::toxdigit_upper()
- * to_hex_digit_lower() -> ascii::toxdigit_lower()
- * hex_to_number() -> ascii::xdigit_to_number()
- + ascii::todigit()
- + ascii::digit_to_number()
- 2017-09-18 __vic
- * Renamed io.h -> stdio_file.h
- 2017-09-14 __vic
- * readers.h removed. All content moved to:
- + readers/range.h (range_reader, range_reader_n)
- + readers/container.h (container_reader)
- + readers/cstring.h (basic_cstring_reader, cstring_reader)
- * writers.h removed. All content moved to:
- + writers/push_back.h (push_back_writer)
- * string_utils.h:
- * string_reader moved to:
- + readers/string.h
- * string_writer moved to:
- + writers/string.h
- * io.h:
- * cstream_reader moved to:
- + readers/cstream.h
- * cstream_writer moved to:
- + writers/cstream.h
- + read(std::FILE *, unsigned char &)
- + readers/cstream.h: cstream_reader: read(unsigned char &)
- * readers/cstring.h:
- + basic_cstring_reader<char>: read(unsigned char &)
- * readers/string.h:
- + basic_string_reader
- + basic_string_reader<char>: read(unsigned char &)
- * writers/string.h:
- + basic_string_writer
- 2017-06-30 __vic
- * Renamed string_ops.h -> string_utils.h
- * Renamed static_string -> readonly_cstring
- 2017-02-21 __vic
- * fs.h: file_size(): uintmax_t is used as a return type
- 2017-01-31 __vic
- * str2num.h: std::strchr(s,0) returns non-const pointer on MinGW so
- tchar::end(s) is used instead
- 2017-01-30 __vic
- + readers.h:
- + range_reader
- + range_reader_n
- + container_reader
- + basic_cstring_reader, cstring_reader
- + writers.h:
- + push_back_writer
- * string_ops.h:
- + string_reader
- + string_writer
- * base16.h: base16: uses readers and writers
- * base64.h: base64: uses readers and writers
- * io.h:
- + read(std::FILE *, char &)
- + write(std::FILE *, char)
- + cstream_reader
- + cstream_writer
- 2017-01-24 __vic
- + windows/critical_section.h
- + windows::CriticalSection
- + windows::CSGuard
- + windows/handle.h
- + windows::Handle
- + windows::WaitAbandoned
- 2017-01-23 __vic
- - str2num.h: C++98 mode
- + iterator.h:
- + begin(T[]), end(T[]), cbegin(T[]), cend(T[])
- + advance(), next(), prev()
- 2017-01-20 __vic
- + bin_file.h
- + bin_file
- + str2num.h: decimal_parser
- + base16.h:
- + base16::encode_lower(), base16::encode_upper(), base16::decode()
- + base64.h:
- + base64::encode(), base64::decode()
- + base64::encoded_length(), base64::max_decoded_length()
- 2017-01-18 __vic
- + fs.h:
- + path_exists(), file_exists(), dir_exists()
- + mkdir(), mkdir_if_absent()
- + rmdir(), rmdir_if_exists()
- + get_current_dir()
- + remove_file(), remove_file_if_exists(), remove_file_nt()
- + copy_file(), copy_file_if_exists(), copy_file_replace(),
- copy_file_replace_if_exists()
- + move_file(), move_file_if_exists(), move_file_replace(),
- move_file_replace_if_exists()
- + rename_file(), rename_file_if_exists(), rename_file_replace(),
- rename_file_replace_if_exists()
- + file_size()
- 2017-01-16 __vic
- * throw_errno() moved: error.h -> throw_errno.h
- 2017-01-15 __vic
- * windows::throw_last_error() moved: windows/error.h ->
- windows/throw_last_error.h
- 2017-01-13 __vic
- + str2num.h
- + decimal_to_number()
- + decimal_to_number_range()
- 2017-01-12 __vic
- + meta.h:
- + integral_constant, true_type, false_type
- + is_same, is_const
- + remove_const, remove_volatile, remove_cv
- + remove_pointer
- + is_signed_integer, is_unsigned_integer
- + enable_if, disable_if
- + set_of_chars.h:
- + set_of_chars
- 2017-01-10 __vic
- + windows/error.h
- + windows::error
- + windows::throw_last_error()
- 2017-01-09 __vic
- * Renamed trim.h -> string_ops.h
- * string_ops.h:
- + pad_left(), pad_right()
- * sift() treats nullptr as an empty string
- + ascii_string.h:
- + toupper(), tolower() for strings
- + equal_icase() for strings
- 2016-12-30 __vic
- + ascii.h:
- + isdigit(), isxdigit(), isalpha(), isalnum(), isspace(), isascii()
- + islower(), isupper()
- + tolower(), toupper(), upper_to_lower(), lower_to_upper()
- + equal_icase(char,char)
- + date_time.h:
- + is_leap_year()
- + days_in_month()
- + days_between_years()
- + validate_date(), validate_time(), validate_date_time()
- 2016-12-29 __vic
- + stdint.h:
- + [u]int<N>_t, [u]int_least<N>_t, [u]int_fast<N>_t, [u]intmax_t,
- [u]intptr_t
- + int_exactly_bytes<>, uint_exactly_bytes<>
- + bits.h:
- + lo_nibble(), hi_nibble()
- + msb_ones(), lsb_ones()
- + get_lsbs()
- + ord()
- + to_hex_digit_upper(), to_hex_digit_lower()
- + hex_to_number()
- + swapped_nibbles()
- + rotl(), rotr()
- 2016-12-28 __vic
- + string_buffer: move constructor for std::string
- + logger.h:
- + logger
- 2016-12-26 __vic
- + string_ref.h:
- + basic_string_ref (string_ref)
- + string_buffer: string_ref support
- + trim.h:
- + trim(), trimmed(), trim_left(), ...
- + sift(), sift_if()
- 2016-12-23 __vic
- + io.h:
- + stdio_file
- + getline()
- + object_pool.h:
- + object_pool
- + tchar.h
- 2016-12-22 __vic
- + to_text.h:
- + to_text_append()
- + string_buffer.h:
- + string_buffer
- 2016-12-21 __vic
- + defs.h:
- + nullptr
- + non_copyable
- + non_heap_allocatable
- + array_size()
- + static_string.h:
- + static_string
- + error.h:
- + exception
- + libc_error
- + throw_errno()
- 2016-06-23 __vic
- * Total revision and rework started in order to publish the code
- VERSION 0.6
- 2011-05-17 __vic
- * The last internal release before rework (no distribution)
- VERSION 0.5.1
- 2010-09-08 __vic
- * The last released version before rework
- 2007-08-15 __vic
- * The project is started
|