Menu

Tree [b75001] master /
 History

HTTPS access


File Date Author Commit
 benchmarks 2021-01-15 Joachim Schurig Joachim Schurig [5e701c] using the new KOptions design for the CLI apps
 bits 2020-12-16 Joachim Schurig Joachim Schurig [4a80f8] fixing KRegex to use a KUniqueVoidPtr that enca...
 cmake 2020-10-20 Joachim Schurig Joachim Schurig [ebb24d] suppressing newer cmake warnings on module search
 compat unknown
 debug unknown
 doc unknown
 from unknown
 libs 2020-02-10 Joachim Schurig Joachim Schurig [97ed41] modifying rapidxml to no more append an extra l...
 scripts 2021-01-15 Joe Kuefler Joe Kuefler [6ef825] fixed cmake install for new brew syntax
 smoketests 2020-11-20 Joachim Schurig Joachim Schurig [6a7c00] switching the KSQL base formatting from printf ...
 templates 2021-01-18 Joachim Schurig Joachim Schurig [b3849a] reworking the rest server templates to use the ...
 utests 2021-01-19 Joachim Schurig Joachim Schurig [b75001] adding more KRegex performance checks
 .gitignore 2020-01-04 Joachim Schurig Joachim Schurig [98b34e] switching to KHTTPClient::AddHeader() for compa...
 CMakeLists.txt 2021-01-18 Joachim Schurig Joachim Schurig [81d82b] Add the concept of UTIC (stacks of tags, IDs an...
 bootstrap 2020-12-21 Joachim Schurig Joachim Schurig [9e692a] adapting project templates to newer code
 createdbc.cpp 2020-06-19 Joachim Schurig Joachim Schurig [543f72] replacing all uses of kPrintf() with kFormat(),...
 dekaf2.cpp 2020-05-12 Joachim Schurig Joachim Schurig [fbec48] adding version information for FreeTDS support
 dekaf2.h 2020-01-24 Joachim Schurig Joachim Schurig [4233c9] making endianness detection constexpr on clang ...
 dekaf2all.h unknown
 dekaf2project.cpp 2021-01-16 Joachim Schurig Joachim Schurig [0ce83f] removing missing args option from KOptions
 genunicodetables.cpp 2021-01-15 Joachim Schurig Joachim Schurig [5e701c] using the new KOptions design for the CLI apps
 getentities.cpp unknown
 kaddrplus.h unknown
 kallocator.h unknown
 kassociative.h unknown
 kbar.cpp 2020-07-29 Joachim Schurig Joachim Schurig [789283] Allowing KBAR be output to any output stream, n...
 kbar.h 2020-07-29 Joachim Schurig Joachim Schurig [789283] Allowing KBAR be output to any output stream, n...
 kbase64.cpp 2020-06-10 Joachim Schurig Joachim Schurig [8c949c] do not log an exception for base64 decode error...
 kbase64.h 2019-10-09 Joachim Schurig Joachim Schurig [10ed49] fixing an issue with oversized username/passwor...
 kbitfields.h 2019-07-11 Joachim Schurig Joachim Schurig [947319] getting code to build and pass tests with C++11
 kbufferedreader.cpp 2019-10-28 Joachim Schurig Joachim Schurig [9fc763] adding branch predictions, more logging
 kbufferedreader.h unknown
 kcache.h 2020-12-21 Joachim Schurig Joachim Schurig [891a96] KSharedCache now returns in value semantics, no...
 kcasestring.cpp unknown
 kcasestring.h 2020-11-09 Joachim Schurig Joachim Schurig [f07e1c] fixing KHash to output the same hash values as ...
 kcgistream.cpp 2020-11-10 Joachim Schurig Joachim Schurig [129096] adding KHTTPHeader, which acts mostly like an e...
 kcgistream.h unknown
 kchildprocess.cpp 2021-01-11 Joachim Schurig Joachim Schurig [b42f26] making KChildProcess::Join() resilient against ...
 kchildprocess.h 2021-01-11 Joachim Schurig Joachim Schurig [b42f26] making KChildProcess::Join() resilient against ...
 kchunkedtransfer.cpp 2019-10-29 Joachim Schurig Joachim Schurig [5f2958] next batch of clang-tidy based fixes
 kchunkedtransfer.h 2019-10-29 Joachim Schurig Joachim Schurig [5f2958] next batch of clang-tidy based fixes
 kcompression.cpp unknown
 kcompression.h unknown
 kconnection.cpp unknown
 kconnection.h 2019-11-19 Joachim Schurig Joachim Schurig [ce4388] check for connection reuse in proxy mode as wel...
 kcookie.cpp 2020-07-17 Joachim Schurig Joachim Schurig [973a20] fixing doc, streamlining KCookie code
 kcookie.h 2020-07-17 Joachim Schurig Joachim Schurig [973a20] fixing doc, streamlining KCookie code
 kcrashexit.cpp 2020-11-23 Joachim Schurig Joachim Schurig [db8f15] fixing kAssert() to not crash by itself. no mor...
 kcrashexit.h 2020-12-21 Joachim Schurig Joachim Schurig [780231] fixing erroneous usage of _NDEBUG
 kcrc.cpp unknown
 kcrc.h unknown
 kcsv.cpp 2020-11-04 Joachim Schurig Joachim Schurig [1a401c] fixing warnings found by code analyzer
 kcsv.h 2020-11-06 Joachim Schurig Joachim Schurig [f06397] adding iterator to KInCSV for auto range for lo...
 kctype.cpp unknown
 kctype.h 2020-02-19 Joachim Schurig Joachim Schurig [d61c49] add explicit conversions to Unicode::codepoint_...
 kencode.cpp 2020-02-07 Joachim Schurig Joachim Schurig [a2c3e5] more unit tests around KDec/KEnc, and now using...
 kencode.h 2020-02-07 Joachim Schurig Joachim Schurig [a1f844] adding XML to all encoder/decoder interfaces
 kexception.h 2019-10-10 Joachim Schurig Joachim Schurig [1dfee7] Adding rest client unit tests and fixing a few ...
 kfdstream.cpp 2019-04-02 Joachim Schurig Joachim Schurig [cd9ae2] more concise error message
 kfdstream.h 2019-10-30 Joachim Schurig Joachim Schurig [3868fd] mostly performance related clang-tidy changes
 kfilesystem.cpp 2020-07-28 Joachim Schurig Joachim Schurig [062ada] removing no-op format calls
 kfilesystem.h 2020-06-29 Joachim Schurig Joachim Schurig [f0521a] fixing a semi-bug in KDirectory where, due to r...
 kformat.cpp unknown
 kformat.h 2020-07-28 Joachim Schurig Joachim Schurig [f7b0fe] adding no-op stream formatters, removing a stri...
 kfrozen.h 2020-02-18 Joachim Schurig Joachim Schurig [8cfdfa] adding KHash() class to compute a FNV hash from...
 kgetruntimestack.cpp 2020-08-19 Joachim Schurig Joachim Schurig [050614] improving debug logging and error messages in K...
 kgetruntimestack.h unknown
 khash.cpp 2020-11-09 Joachim Schurig Joachim Schurig [f07e1c] fixing KHash to output the same hash values as ...
 khash.h 2020-11-09 Joachim Schurig Joachim Schurig [f07e1c] fixing KHash to output the same hash values as ...
 khmac.cpp 2020-11-04 Joachim Schurig Joachim Schurig [1a401c] fixing warnings found by code analyzer
 khmac.h 2019-05-09 Joachim Schurig Joachim Schurig [017d1c] using forward definitions for OpenSSL types ins...
 khtmlcontentblocks.cpp 2021-01-19 Joachim Schurig Joachim Schurig [636665] adding BlockContent type to KHTMLContentBlocks,...
 khtmlcontentblocks.h 2021-01-19 Joachim Schurig Joachim Schurig [636665] adding BlockContent type to KHTMLContentBlocks,...
 khtmlentities.cpp unknown
 khtmlentities.h unknown
 khtmlentities5.cpp unknown
 khtmlparser.cpp 2021-01-19 Joachim Schurig Joachim Schurig [5051c3] adding KHTMLText type to KHTMLParser
 khtmlparser.h 2021-01-19 Joachim Schurig Joachim Schurig [5051c3] adding KHTMLText type to KHTMLParser
 khttp_header.cpp 2020-12-03 Joachim Schurig Joachim Schurig [8d35db] minor code changes around HTTP
 khttp_header.h 2020-12-03 Joachim Schurig Joachim Schurig [8d35db] minor code changes around HTTP
 khttp_method.cpp 2020-11-05 Joachim Schurig Joachim Schurig [e525a1] adding a fix for gcc
 khttp_method.h 2020-11-05 Joachim Schurig Joachim Schurig [1bf742] changing design of KHTTPMethod to use an enum i...
 khttp_request.cpp 2020-11-10 Joachim Schurig Joachim Schurig [129096] adding KHTTPHeader, which acts mostly like an e...
 khttp_request.h 2020-07-16 Joachim Schurig Joachim Schurig [87aaac] making GetCookie() const
 khttp_response.cpp 2020-11-10 Joachim Schurig Joachim Schurig [129096] adding KHTTPHeader, which acts mostly like an e...
 khttp_response.h unknown
 khttpclient.cpp 2020-11-10 Joachim Schurig Joachim Schurig [129096] adding KHTTPHeader, which acts mostly like an e...
 khttpclient.h 2020-11-10 Joachim Schurig Joachim Schurig [129096] adding KHTTPHeader, which acts mostly like an e...
 khttperror.cpp 2019-12-11 Joachim Schurig Joachim Schurig [fb0df5] fixing redirection logic in KWebClient
 khttperror.h 2019-12-11 Joachim Schurig Joachim Schurig [fb0df5] fixing redirection logic in KWebClient
 khttpinputfilter.cpp 2020-11-10 Joachim Schurig Joachim Schurig [129096] adding KHTTPHeader, which acts mostly like an e...
 khttpinputfilter.h 2020-06-29 Joachim Schurig Joachim Schurig [693ca0] adding bzip2 as a valid HTTP compression method
 khttpoutputfilter.cpp 2020-11-10 Joachim Schurig Joachim Schurig [129096] adding KHTTPHeader, which acts mostly like an e...
 khttpoutputfilter.h 2020-06-29 Joachim Schurig Joachim Schurig [693ca0] adding bzip2 as a valid HTTP compression method
 khttppath.cpp 2020-06-15 Joachim Schurig Joachim Schurig [71656a] debug cleanup, fixing doxygen generation, chang...
 khttppath.h unknown
 khttprouter.cpp 2020-11-10 Joachim Schurig Joachim Schurig [129096] adding KHTTPHeader, which acts mostly like an e...
 khttprouter.h unknown
 khttpserver.cpp 2020-12-03 Joachim Schurig Joachim Schurig [8d35db] minor code changes around HTTP
 khttpserver.h 2020-11-05 Joachim Schurig Joachim Schurig [1bf742] changing design of KHTTPMethod to use an enum i...
 kinpipe.cpp unknown
 kinpipe.h unknown
 kinshell.cpp unknown
 kinshell.h unknown
 kinstringstream.cpp 2020-06-15 Joachim Schurig Joachim Schurig [71656a] debug cleanup, fixing doxygen generation, chang...
 kinstringstream.h 2020-06-15 Joachim Schurig Joachim Schurig [71656a] debug cleanup, fixing doxygen generation, chang...
 kjoin.h 2020-06-15 Joachim Schurig Joachim Schurig [71656a] debug cleanup, fixing doxygen generation, chang...
 kjson.cpp 2020-08-04 Joe Kuefler Joe Kuefler [b6e925] fixed compiler confusion with new Parse method ...
 kjson.h 2020-10-20 Joachim Schurig Joachim Schurig [d9d032] fixing Windows build
 klambdastream.cpp unknown
 klambdastream.h unknown
 klog.cpp 2021-01-11 Joachim Schurig Joachim Schurig [319838] adding a thread-local recursion prevention for ...
 klog.h 2021-01-11 Joachim Schurig Joachim Schurig [319838] adding a thread-local recursion prevention for ...
 klog_main.cpp 2021-01-16 Joachim Schurig Joachim Schurig [0ce83f] removing missing args option from KOptions
 kmail.cpp 2020-06-02 Joachim Schurig Joachim Schurig [0c831e] fixing bugs in multipart form generation: missi...
 kmail.h 2019-11-19 Joachim Schurig Joachim Schurig [04e096] returning self references in KMail
 kmessagedigest.cpp 2020-11-04 Joachim Schurig Joachim Schurig [1a401c] fixing warnings found by code analyzer
 kmessagedigest.h 2019-05-09 Joachim Schurig Joachim Schurig [68776a] adapting to OpenSSL >= 1.1
 kmime.cpp 2020-06-22 Joachim Schurig Joachim Schurig [406032] adding recursive directory search to KDirectory...
 kmime.h 2020-06-02 Joachim Schurig Joachim Schurig [0c831e] fixing bugs in multipart form generation: missi...
 kmpsearch.cpp unknown
 kmpsearch.h unknown
 kmru.h unknown
 kopenid.cpp 2020-12-10 Joachim Schurig Joachim Schurig [82061c] fixing test for windows
 kopenid.h 2020-12-04 Joachim Schurig Joachim Schurig [a52df2] making KOpenIDKeys/KOpenIDProvider store the RS...
 koptions.cpp 2021-01-16 Joachim Schurig Joachim Schurig [0ce83f] removing missing args option from KOptions
 koptions.h 2021-01-16 Joachim Schurig Joachim Schurig [0ce83f] removing missing args option from KOptions
 koutpipe.cpp unknown
 koutpipe.h unknown
 koutputtemplate.cpp unknown
 koutputtemplate.h unknown
 koutshell.cpp unknown
 koutshell.h unknown
 koutstringstream.cpp 2020-08-18 Joachim Schurig Joachim Schurig [ebae4d] KStringStream: small change that permits rvalue...
 koutstringstream.h 2020-08-18 Joachim Schurig Joachim Schurig [ebae4d] KStringStream: small change that permits rvalue...
 kparallel.cpp 2019-10-29 Joachim Schurig Joachim Schurig [10e5a1] more clang-tidy fixes
 kparallel.h unknown
 kpipe.cpp unknown
 kpipe.h unknown
 kpool.h 2020-11-20 Joachim Schurig Joachim Schurig [1a511a] adding a std::apply() for C++14
 kprof.cpp unknown
 kprof.h unknown
 kprops.cpp unknown
 kprops.h unknown
 kquotedprintable.cpp unknown
 kquotedprintable.h unknown
 kreader.cpp 2020-06-15 Joachim Schurig Joachim Schurig [71656a] debug cleanup, fixing doxygen generation, chang...
 kreader.h 2020-08-28 Joachim Schurig Joachim Schurig [bd3b26] adding auto range based for loop iteration to KSQL
 kregex.cpp 2020-12-16 Joachim Schurig Joachim Schurig [4a80f8] fixing KRegex to use a KUniqueVoidPtr that enca...
 kregex.h 2020-12-16 Joachim Schurig Joachim Schurig [4a80f8] fixing KRegex to use a KUniqueVoidPtr that enca...
 kreplacer.cpp 2020-01-24 Joachim Schurig Joachim Schurig [4233c9] making endianness detection constexpr on clang ...
 kreplacer.h unknown
 krest.cpp 2020-07-28 Joachim Schurig Joachim Schurig [062ada] removing no-op format calls
 krest.h 2020-12-03 Joachim Schurig Joachim Schurig [8d35db] minor code changes around HTTP
 krestclient.cpp 2020-11-10 Joachim Schurig Joachim Schurig [129096] adding KHTTPHeader, which acts mostly like an e...
 krestclient.h 2020-11-10 Joachim Schurig Joachim Schurig [129096] adding KHTTPHeader, which acts mostly like an e...
 krestroute.cpp 2020-08-21 Joachim Schurig Joachim Schurig [f0b57d] better filtering of query parms for recording
 krestroute.h 2020-08-21 Joachim Schurig Joachim Schurig [f0b57d] better filtering of query parms for recording
 krestserver.cpp 2020-12-21 dshepard dshepard [5e3f8e] Add GetReferer accessor to REST server object
 krestserver.h 2020-12-21 dshepard dshepard [5e3f8e] Add GetReferer accessor to REST server object
 krow.cpp 2020-09-30 Joachim Schurig Joachim Schurig [ddd727] adding the backtick to MySQL's escape character...
 krow.h 2020-11-04 Joachim Schurig Joachim Schurig [1a401c] fixing warnings found by code analyzer
 krsakey.cpp 2020-12-04 Joachim Schurig Joachim Schurig [90e808] adding correct move constructor and assignment ...
 krsakey.h 2020-12-04 Joachim Schurig Joachim Schurig [90e808] adding correct move constructor and assignment ...
 krsasign.cpp 2020-12-04 Joachim Schurig Joachim Schurig [90e808] adding correct move constructor and assignment ...
 krsasign.h 2020-12-04 Joachim Schurig Joachim Schurig [90e808] adding correct move constructor and assignment ...
 ksharedptr.h 2020-12-03 Joachim Schurig Joachim Schurig [211c87] renaming bSequential to bAcquireRelease in KSha...
 ksharedref.h 2020-12-21 Joachim Schurig Joachim Schurig [780231] fixing erroneous usage of _NDEBUG
 ksignals.cpp 2019-10-29 Joachim Schurig Joachim Schurig [10e5a1] more clang-tidy fixes
 ksignals.h unknown
 ksmtp.cpp 2021-01-11 Joachim Schurig Joachim Schurig [8f09f1] more logging in KSMTP
 ksmtp.h unknown
 ksplit.cpp 2019-12-17 Joachim Schurig Joachim Schurig [2488e1] adding versions of kJoin writing into streams, ...
 ksplit.h 2020-11-03 Joachim Schurig Joachim Schurig [ab6450] fixing issue with kSplit not inserting the most...
 ksql.cpp 2020-12-10 Joachim Schurig Joachim Schurig [b6d9b8] KSQL: fixing a few SQL format strings to use th...
 ksql.h 2020-12-10 Joachim Schurig Joachim Schurig [b6d9b8] KSQL: fixing a few SQL format strings to use th...
 ksqlite.cpp 2020-10-01 Joachim Schurig Joachim Schurig [ed9f13] minor fix
 ksqlite.h 2020-10-01 Joachim Schurig Joachim Schurig [578b0f] KSQLite: switch entirely to 1-based columns, ma...
 ksslclient.h unknown
 ksslstream.cpp unknown
 ksslstream.h 2020-06-09 Joachim Schurig Joachim Schurig [838553] suppressing error message on shutting down an a...
 kstack.h unknown
 kstream.cpp unknown
 kstream.h unknown
 kstreambuf.cpp 2020-01-06 Joachim Schurig Joachim Schurig [fd4ac3] making kAppendAll safe on unseekable streams, a...
 kstreambuf.h unknown
 kstring.cpp 2020-05-07 Joe Kuefler Joe Kuefler [3c38fd] reduced some warnings to debugs
 kstring.h 2020-12-10 Joachim Schurig Joachim Schurig [3d91d1] adding specializations for hash creation from c...
 kstringstream.cpp 2020-08-18 Joachim Schurig Joachim Schurig [ebae4d] KStringStream: small change that permits rvalue...
 kstringstream.h 2020-08-18 Joachim Schurig Joachim Schurig [ebae4d] KStringStream: small change that permits rvalue...
 kstringutils.cpp 2021-01-15 Joachim Schurig Joachim Schurig [fc25a9] fixing kIsFloat() to not accept strings without...
 kstringutils.h 2021-01-15 Joachim Schurig Joachim Schurig [1108e7] adding a kUnsigned() test, and making sure a pr...
 kstringview.cpp 2021-01-15 Joachim Schurig Joachim Schurig [71acdc] optimizing KStringView::erase() for size 0
 kstringview.h 2020-12-10 Joachim Schurig Joachim Schurig [3d91d1] adding specializations for hash creation from c...
 ksubscribe.h unknown
 ksystem.cpp 2020-11-23 Joachim Schurig Joachim Schurig [6281dd] fixing race in kGetHostname()
 ksystem.h 2020-11-22 Joe Kuefler Joe Kuefler [f79be7] ksystemstats: lots of tweaks for mac and hostna...
 ksystemstats.cpp 2021-01-18 Joe Kuefler Joe Kuefler [8b7af5] added load_per_core to ksystemstats calculations
 ksystemstats.h 2020-11-19 Joe Kuefler Joe Kuefler [4b311a] fixed bugs in DescribeTables() and added JSON o...
 ktcpclient.h unknown
 ktcpserver.cpp 2020-08-24 Joachim Schurig Joachim Schurig [16237c] catching also boost::exception and unknown exce...
 ktcpserver.h 2019-10-28 Joachim Schurig Joachim Schurig [ae71e1] more clang-tidy
 ktcpstream.cpp 2019-10-30 Joachim Schurig Joachim Schurig [56368e] next bunch of clang-tidy inspired patches
 ktcpstream.h 2020-03-02 Joachim Schurig Joachim Schurig [826090] adding IsDisconnected() to tcp/unix/ssl streams...
 kthreadpool.cpp 2021-01-07 Joachim Schurig Joachim Schurig [b0d9b8] KThreadPool: allowing tasks with arbitrary retu...
 kthreadpool.h 2021-01-11 Joachim Schurig Joachim Schurig [82014d] removing superfluous ()
 ktimer.cpp 2021-01-06 Joachim Schurig Joachim Schurig [4824bb] removing rounded time keeping (half a second is...
 ktimer.h 2021-01-06 Joachim Schurig Joachim Schurig [4824bb] removing rounded time keeping (half a second is...
 kunixstream.cpp 2019-10-30 Joachim Schurig Joachim Schurig [56368e] next bunch of clang-tidy inspired patches
 kunixstream.h 2020-03-02 Joachim Schurig Joachim Schurig [826090] adding IsDisconnected() to tcp/unix/ssl streams...
 kuntar.cpp unknown
 kuntar.h unknown
 kurl.cpp 2020-06-05 Joachim Schurig Joachim Schurig [de227f] finally making KURL serialization for username ...
 kurl.h 2020-09-10 Joachim Schurig Joachim Schurig [ee48df] adding begin()/end() to URL components to make ...
 kurlencode.cpp 2019-11-18 Joachim Schurig Joachim Schurig [b5e477] more extern templates for clang
 kurlencode.h 2020-09-10 Joachim Schurig Joachim Schurig [ee48df] adding begin()/end() to URL components to make ...
 kuseragent.h unknown
 kutf8.h 2020-11-23 Joachim Schurig Joachim Schurig [5da755] fixing a minor SFINAE issue in kutf8.h, adding ...
 kutf8iterator.h 2020-01-07 Joachim Schurig Joachim Schurig [c05d53] getting KUTF8Iterator to compile in Windows, ma...
 kutic.cpp 2021-01-19 Joachim Schurig Joachim Schurig [92dc30] refactoring KUTIC classes, adding loaders for f...
 kutic.h 2021-01-19 Joachim Schurig Joachim Schurig [92dc30] refactoring KUTIC classes, adding loaders for f...
 kvariant.h 2020-10-15 Joachim Schurig Joachim Schurig [60a213] check for boost::variant2, and use it for clang...
 kversion.cpp 2020-01-02 Joachim Schurig Joachim Schurig [e0e0c2] fixing kversion.cpp for older gcc
 kversion.h 2020-11-30 Joachim Schurig Joachim Schurig [d23e7b] fixing KVersion ambiguities by making all const...
 kwebclient.cpp 2020-11-10 Joachim Schurig Joachim Schurig [129096] adding KHTTPHeader, which acts mostly like an e...
 kwebclient.h 2020-10-12 Joachim Schurig Joachim Schurig [6f9ce1] having KRestClient inherit protected from KWebC...
 kwords.cpp 2019-07-11 Joachim Schurig Joachim Schurig [947319] getting code to build and pass tests with C++11
 kwords.h 2020-08-20 Joachim Schurig Joachim Schurig [e55d7e] adding KNormalizingHTMLWords and unit tests
 kwriter.cpp 2020-10-13 Joachim Schurig Joachim Schurig [c0665e] finally correctly counting bytes read from a KH...
 kwriter.h 2020-10-20 Joachim Schurig Joachim Schurig [a17443] changing type to internal size_type for KString...
 kxml.cpp 2020-12-16 Joachim Schurig Joachim Schurig [4ebab5] using the KUniqueVoidPtr type also for KXML and...
 kxml.h 2020-12-16 Joachim Schurig Joachim Schurig [4ebab5] using the KUniqueVoidPtr type also for KXML and...
 kzip.cpp 2020-12-16 Joachim Schurig Joachim Schurig [4ebab5] using the KUniqueVoidPtr type also for KXML and...
 kzip.h 2020-12-16 Joachim Schurig Joachim Schurig [4ebab5] using the KUniqueVoidPtr type also for KXML and...
 unicodetables.cpp 2019-03-13 Joachim Schurig Joachim Schurig [f8b2f1] latest table version
Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.