Robust applications framework in C++. Includes a static analysis tool and two applications.
NodeBase
SlabHeap
, which is expandable, and convert all object pools to use it.NbHeap
to BuddyHeap
.>heaps setsize
command to indicate what level of restart is required to effect a heap's new size.MutexGuard
to SysMutex
and provide a LockGuard
for SysLock
.terminate_handler
on a per-thread basis, which is what Windows requires._set_abort_behavior
to suppress Windows-specific behaviors when abort()
is called.CodeTools
[[fallthrough]]
.<
/>
used in templates.Known deficiencies: see Release v0.2.50.
Builds
-A
platform argument, so Visual Studio 17 2022 is used as the CMake generator for x86.Linux Targets
Duration
: simplified by converting to <chrono>
and <ratio>
Gate
: added to provide portable, interruptable condition variable (similar to Windows' CreateEvent
, SetEvent
, WaitForSingleObject
)Heap
: modified to support LinuxHeapCfg
: added for configuring heap sizesNbHeap
: modified to support Linux; now used by all heaps except default heapSysConsole
: implemented Linux targetSysFile
: made portable by converting to <filesystem>
(needs C++17)SysHeap
: implemented Linux target; now used only for default heapSysLock
: made portable by converting to <mutex>
SysMemory
: implemented Linux targetSysMutex
: made portable by converting to <mutex>
SysSignals
: implemented Linux targetSysThread
: implemented Linux target based on POSIX threadsSysThreadStack
: implemented Linux targetSysTickTimer
: replaced by portable SteadyTime
, which uses <chrono>
SysTime
: replaced by portable SystemTime
, which uses <chrono>
TimePoint
: replaced by portable SteadyTime
, which uses <chrono>
NetworkBase
(SysIpL2Addr
, SysIpL3Addr
, SysSocket
, SysTcpSocket
, SysUdpSocket
)NodeBase
RootThread
instead of wrapping main
thread.NbHeap
.CodeTools
<ratio>
, <chrono>
, <mutex>
, <condition_variable>
, and <filesystem>
to subs directory.<ratio>
).OS_LINUX
in >parse - linux <files>
.#include
for a class template without replacing it with a forward declaration.CxxStats
, CxxToken.Shrink
, and ShrinkCommand
.Documentation
Known Deficiencies
RscLauncher
still lacks a Linux target.RscLauncher
fails, apparently because of something up-issued by VS2022.std::terminate
fails in a release build because of a bug in Windows code up-issued by VS2022.NodeBase
exit()
on RestartReboot
.RscLauncher
(in new launcher
directory) to support RestartReboot
(an automated reboot). Closes #12.AbnormalExit
in Thread::Start
.omit
parameter to SysThreadStack::Display
.ThreadRegistry::Restarting
to use a set
instead of a list
.#define NO_FT
and use it to tag functions, replacing Debug::noft()
.CodeTools
>check
to log a file that doesn't end in an endline.>fix
to insert a missing endline at the end of a file.(
at the end of a line or a }
at the end of a file.>fix 142 f $files
to append an endline to all files that are missing one.FtLocks_
.FtLocks_
.nw>ipservices
command.enum
to 8 bits can lead to a NUL
in an ostringstream
, with truncation when using str()
.ostringstream
to speed up log generation.Thread.Start
without deleting the thread, perform critical cleanup actions that would otherwise not occur.Thread.Start
.TlvParmPtr
, TlvParmArray
) in TlvParameter.h.>fix
to various things found by >check
.shutdown()
errors that result from race conditions.nullptr
should satisfy an argument that expects a function.NodeBase
Deferred
, DeferredRegistry
, and DeferredThread
).ThreadRegistry
entry so that its ThreadId
can appear in function traces to distinguish it from other threads.NetworkBase
CodeTools
Editor
failed to remove the first member initializer because Parser
incorrectly set its position.NetworkBase
IpBuffer
payloads (closes #48).SetClose
function to control TCP graceful/hard close.CodeTools
FunctionCouldBeFree
, Editor
failed to move the function.TypeMatch
of all arguments instead of only the worst one.ItemCouldBePrivate
.ArgumentCouldBeConst
on an rvalue reference argument.NetworkBase
:
getaddrinfo
or getnameinfo
.SysSocket::StartLayer
fails.bind
, sendto
, or recvfrom
.nw>localaddr
command to display the local address, with the option to re-verify it.nw>localaddrs
command to display all available local addresses.nw>usesipv6
command to display whether IPv6 is enabled.NodeBase
:
GetValue
functions to CurrValue
and provide NextValue
functions.SIGCLOSE
on threads that will exit during a restart until all threads have been asked if they will exit.Proceed()
.>sizes
command.CodeTools
:
Editor
failed to make an item protected
or private
, and actually left it erased.CheckDebugFt
cleared the database of Debug::ft
function names before checking each file, which allowed duplicate function names to be used.Editor
add a new Debug::ft
function name to the database of these names so that it won't be reused when editing another function.DataCouldBeFree
not logged on a constant that has no references.AllocationException
.SourcePath
configuration parameter (in input/element.config
) relative to the startup directory.shared/analysis.ruleset
file for Windows builds that enable code analysis.NOTE: RSC is now on VS2022, so .vcxproj files now use later versions of Windows libraries.