M-griffin/Oblivion2-XRM

Oblivion2-XRM - Removal of Boost Libs

M-griffin opened this issue · 8 comments

Boost lib is very nice and has many expanded c++ features. A majority of them minus a few things with locale are now available in the standard c++11 and above releases.

Boost also has cross-platform issues with it's locale stuff, especially on OSX.
For this and many other reasons, boost will be removed and replaced the same way it was done with EtherTerm.

If a developer can't get errors and issues worked out, having to also customize a library for icu support, then how are users going to fair. Lets not make things hard for users and anyone else interesting in compiling and dealing with the mess that is Boost.

Rewrite has started on the feature/osx-project.
Once completed testing will result on OS/X High Sierra.
So far Boost Locale, and Boost Regex, Boost Datetime have been replaced.
ASIO, Threads, Boost Smart Pointers will be next.

With ASIO removal, this will drop initial SSL support, but with libssh we can replace with SSH.
AsyncAccept for server connections will need to be added to the io_service method reworked in EtherTerm for it's ASIO replacement.

Boost has been successfully removed.
SDL2_net has been setup to repalce ASIO sockets.
IOService replacment is currently being reworked from EtherTerm
Deadline Timer is be implemented with IOService and async_wait, along with wait methods.

Most of IO_Service replacement is complete.
AsyncAccept for Server Connections was added and is working.
Finishing work on Deadline timer now, then need to add replacement for boost:filesystem for parsing files in a directory.

Creating new Directory Class for cross-platform file list parsing to replace Boost::Filesystem, Something like this is available in C++17, but most distribution are a little behind and keeping things right now at C++11 for better compatibility.

Also adding new Async_Timers, reworking previous thought out implementation of the Deadline Timer, it should now use it's own thread instead of the main io_service loop.

Some Notes so it's not forgotten, Main thread should now be incorporated to processes data saved to a SafeQueue. The new IO_Service should not be doing all the call back work when data is received, then other IO_Service operations would have to wait for those calls to return, defeating the purpose.

Mimic how EtherTerm is setup with IO_Service.

Completed Deadline Timer with Async Wait Callbacks. Testing good for the Initial Telnet Op and ESC sequence detection. Testing other platforms now then should be able to get in a Pull Request soon.

Good progress, latest branch after some regex fixes is now compiling and running smoothly on OS/X High Sierra without issue. Still have the unit test project to update next.

Initial rework completed. Notes the Menu and Prompt converters have no issues and being small utilities will still keep boost as a dependency.

Completed per PR #191