Archive of the libbitcoin Slack #general channel.
simple_ostream
exception type: OStream::failure
position type (signed): OStream::pos_type
enum flags: OStream::rdstate
{
goodbit,
eofbit,
failbit,
badbit
}
OStream::pos_type tellp();
OStream::rdstate rdstate();
void setstate(OStream::rdstate);
void write(const char*, OStream::pos_type);
void flush();
simple_istream
exception type: IStream::failure
position type (signed): IStream::pos_type
enum flags: IStream::rdstate
{
goodbit,
eofbit,
failbit,
badbit
}
enum flags: IStream::seekdir
{
beg,
end,
cur
}
IStream::pos_type tellg();
IStream::rdstate rdstate();
void setstate(IStream::rdstate);
void read(char*, IStream::pos_type);
int peek();
void clear();
IStream::pos_type seekg(IStream::pos_type, IStream::seekdir);So tomorrow is implementation of the light streams
set_strong using the new generalized simple iostreams. These are passed into the system read/writer as opposed to the previous iteration which ad-hocked a reader and writer, so there is one level of indirection/containment here that wasn't present in the previous test. The is resulted in a 123% of the previous run. The previous run was 35% of the std::iostreams unoptimzed run, and this new run is 43% of that run. New run in gray.

shared_ptr op-data with unique_ptr. These were originally created under the assumption that shared_ptr would be the basis of script evaluation, but the generalization to external_ptr made that unnecessary. unique_ptr eliminates one word per op-data instance and eliminates mutex locks internal to shared_ptr. And since a large percentage of these are nullptr and scripts are the bulk of the chain, this should be a material optimization, and simple.