Writing about C++, Programming, Fost 5, the web, Thailand and anything else that catches my attention—with some photos thrown in
There is a new library now, Makham, which is at the moment a basic coroutines library offering asynchronous task execution with ties through futures to non-coroutine code. This sits on top of the coroutines TS and is currently only usable from Clang.
There has also been more progress towards being able to move to immutable shared strings and away from the old fostlib::string
interface, with more changes coming. A small change to the JSON parser has been shipped that gives a considerable performance boost (up to 30%) in some circumstances.
There is a new HTTP client library that supports testing through setting expectations which is part of the fost-internet library. Client code in the rest of the libraries will be migrated to it, which will improve testing capabilities for Fostgres and Odin.
You should install Boost development packages using your package manager or brew to safe you from having to build them.
git clone --branch=5.20.03.45095 --recursive git@github.com:hotkit/fost-hello.git cd fost-hello mkdir build.tmp cd build.tmp cmake -G Ninja .. -DCMAKE_INSTALL_PREFIX=../dist ninja install/strip export LD_LIBRARY_PATH=../dist/lib ../dist/bin/hello
On the Mac you will need to set DYLD_LIBRARY_PATH before running hello
export DYLD_LIBRARY_PATH=../dist/lib ../dist/bin/hello
json
can now be constructed from u16 literals.std
and boost
shared_ptr
s.digester
interface to take more string types.json
store the string directly rather than as a shared_ptr
. This is a breaking change on json
visitors.parse_error
.jcursor
API so it can mutate json
more efficiently.-e
(print arguments/environment) support from command line.fostgres-test
.testserver.cookies
to fostgres-test
.rm-path
to test scripts so we can remove JSON from variable values.tsmap::alter
added so a found member can be changed in-situ.tsmap::add_if_not_found
miss lambda can now mutate the found item.A very small release this time that just adds server verification to TLS/SSL connections. This is now enabled by default on the HTTP user agent.
Next time though there will be some libraries. Watch this space!
You should install Boost development packages using your package manager or brew to safe you from having to build them.
git clone --branch=5.19.12.45093 --recursive git@github.com:hotkit/fost-hello.git cd fost-hello mkdir build.tmp cd build.tmp cmake -G Ninja .. -DCMAKE_INSTALL_PREFIX=../dist ninja install/strip export LD_LIBRARY_PATH=../dist/lib ../dist/bin/hello
On the Mac you will need to set DYLD_LIBRARY_PATH before running hello
export DYLD_LIBRARY_PATH=../dist/lib ../dist/bin/hello
vstring
header.All of the code has now been moved to a new home on GitHub and a couple of the libraries have had their names tweaked. Because of the way GitHub works this should be a completely transparent change.
Applications have for a while been able to use JSON as the configuration format. The problem with JSON for this is that it has very strict format requirements. Now the configuration files use a new “sloppy” JSON parser that allows commas anywhere that whitespace is allowed and also supports C/C++ style comments.
Fostgres will now always trim whitespace from strings before trying to insert them into the database. This should help with some consistency problems. If you don't want to trim the data then put "trim": false
into the column configuration.
You should install Boost development packages using your package manager or brew to safe you from having to build them.
git clone --branch=5.19.09.45082 --recursive git@github.com:hotkit/fost-hello.git cd fost-hello mkdir build.tmp cd build.tmp cmake -G Ninja .. -DCMAKE_INSTALL_PREFIX=../dist ninja install/strip export LD_LIBRARY_PATH=../dist/lib ../dist/bin/hello
On the Mac you will need to set DYLD_LIBRARY_PATH before running hello
export DYLD_LIBRARY_PATH=../dist/lib ../dist/bin/hello
nullptr
buffers.
f5::u8view
.minit
will now always try to execute, even if it is not needed.The biggest change this time around is that a large number of APIs have been marked for deprecation. These will be removed after the next tagged release (September), so please take special care with the deprecation notices and update any code.
We are currently working on full UTF-16 and UTF-32 support in f5-cord. Once this lands then we will deprecate a slew more of old string APIs. Our target is still to replace fostlib::string
with f5::u8string
. It will of course take a while.
Good progress is being with iOS support now. There is a new unit test runner, test-ios, that passes all unit tests and is available to download and build.
We've removed a couple of the applications that were never being updated, beanbag and beanbag-seed.
We will also cut down the scope of the open source part of Odin to remove the application handling aspects. These just cause a complication and we believe that the only use cases are particular to us. Please get in touch if this is not the case.
You should install Boost development packages using your package manager or brew to safe you from having to build them.
git clone --branch=5.18.09.45065 --recursive git@github.com:KayEss/fost-hello.git cd fost-hello mkdir build.tmp cd build.tmp cmake -G Ninja .. -DCMAKE_INSTALL_PREFIX=../dist ninja install/strip export LD_LIBRARY_PATH=../dist/lib ../dist/bin/hello-world-d
On the Mac you will need to set DYLD_LIBRARY_PATH before running hello-world-d
export DYLD_LIBRARY_PATH=../dist/lib ../dist/bin/hello-world-d
substr
as the second argument handling doesn't match std::string::substr
.std::experimental::optional
with std::optional
std::chrono::system_clock
std::string
be explicitly invoked.length
members of tagged_string
and string
.tagged_string
that are currently on string
.bin/minit
back into project.string::length
and tagged_string<>::length
fostlib::test::c_files_folder
, describing the root folder tests should use if they need access to the file system.FSL_FORCE_STD_FILESYSTEM
switches from boost::filesystem
to std::filesystem
with names in fostlib::fs
.fostlib::tagged_string<T, I>::underlying()
.fostlib::string::c_str()
.fostlib::string
into an f5::u8string
(u8string_transition
).RETURNING
support to connection's update
method.-C
option which changes its current directorytext/
Content-Type) are served as UTF8.
We've now finally started the process of porting the fostlib::string
implementation to use f5::u8string
. A short write up about the design can be found in the repository. There are going to be a lot of new deprecations in the next release and we'll then start to remove the deprecated code after that.
You should install Boost development packages using your package manager or brew to safe you from having to build them.
git clone --branch=5.18.09.45065 --recursive git@github.com:KayEss/fost-hello.git cd fost-hello mkdir build.tmp cd build.tmp cmake -G Ninja .. -DCMAKE_INSTALL_PREFIX=../dist ninja install/strip export LD_LIBRARY_PATH=../dist/lib ../dist/bin/hello-world-d
On the Mac you will need to set DYLD_LIBRARY_PATH before running hello-world-d
export DYLD_LIBRARY_PATH=../dist/lib ../dist/bin/hello-world-d
ends_with
on the u8view and u8string.f5::u8string
test.throw
view to help with testing and control.exception.catch
for running alternative views when exceptions are thrown.