To CppCMS 1.x.x Beta Users
5/6/10, by artyom ;
Posted in:
Progress;
2 comments
Edit: You may update your copies.
Hello,
Withing few weeks the CppCMS 1.x.x branch would be very unstable due to big internal changes: replacement of Boost.Asio with CppCMS's own event loop.
Latest nearly stable revision is 1154
So I'd recommend not to update your working copies of CppCMS 1.x.x. branch till further notice.
Comments
Hello Artyom,
I'm curious about the rationale behind this decision to drop Asio. Did you blog something about this before?
No, I hadn't written. I come to conclusion that I need to replace boost.asio for several reasons:
I need asynchronous events management in CppCMS API and ASIO can't be exposed in relatively simple way (just behind heavy pimpl classes).
Asio does not supports "release of socket" or just poll for readability of socket, because IOCP does not support this.
See: https://svn.boost.org/trac/boost/ticket/3900. I need this.
Asio does not play well with pre-forking at all:
See: https://svn.boost.org/trac/boost/ticket/4162, this is one of my main showstoppers to release CppCMS with prefork support.
So I may fix this in asio and submit patches, but I immediately loose an ability to work with external boost version.
The last one was may final reason why I left Boost.Asio and I had written "lightweight" version of asio, with very little use of templates. I sacrificed support of IOCP that made the design very simple as I have only reactor-based service based on epoll, /dev/poll, kqueue, poll or select.
Once I'll complete I'll write the post about it.
I'm actually creating tiny version of boost that supports backward compatible ABI so I can easily expose it in CppCMS API.
Note: I still think that Boost.Asio is great software and my event loop designed after it, but Boost has it's own problems I want to avoid.
Add Comment:
You must enable JavaScript in order to post comments.