Subject: Re: [boost] Boost.Process: Formal review request
From: Ronald Garcia (rxg_at_[hidden])
Date: 2012-12-13 18:17:46
I have added Process to the review schedule.
On Dec 8, 2012, at 5:42 PM, Boris Schaeling wrote:
> I'd like to ask for a formal review of the library which is known as Boost.Process 0.5:
> - Docs: http://www.highscore.de/boost/process0.5/
> - Code: http://www.highscore.de/boost/process0.5/process.zip
> Since 2006 a lot of people spent a tremendous amount of work on a process management library for Boost. Since then Boost.Process went through two GSoC projects, had a formal review in 2011 where it got rejected, was discussed at BoostCon, went through a complete overhaul afterwards, spun off boost::asio::windows::object_handle and got a sponsorship. In fact the library is around for so long and has attracted so much interest that it could be called a de facto Boost library. People call it Boost.Process, and there are some who use the library in their projects.
> The main reason why Boost.Process is under construction for six years: Differences between the supported platforms Windows and POSIX. There are other libraries like Boost.Asio or Boost.Interprocess which have to deal with platform differences, too. But in their case no core functionality is affected. Classes like boost::asio::posix::stream_descriptor or boost::interprocess::windows_shared_memory are nice to have, and no one is worried that they only work on one platform.
> Boost.Process has to deal with platform differences in core functions. For example, resource leaking is unacceptable (zombie processes on POSIX and open HANDLEs on Windows when child processes exit). Given that platforms are very different two extreme solutions are possible: Abstract away differences at all costs. Or tell the library user to call platform-specific system functions. As none is satisfactory, a balance between these extremes has to be found. But where this balance should be exactly can be discussed with no end. Someone has to make a decision at some point, and that will be another important role for the review manager. :)
> Looking back at what has been accomplished since the first review, I think Boost.Process 0.5 is a huge step forward:
> * The library is now fully customizable. While previous versions had a function called launch() which was immutable, the current version is based on things called executors and initializers. An executor is basically a struct with member variables which will be passed as arguments to a system function to spawn a child. Initializers set those member variables. Library users pick initializers provided by Boost.Process or define their own to setup executors.
> * Boost.Process 0.5 is cleaner and more focused as it makes better use of other Boost libraries. For example, previous versions had their own stream classes. They were removed in the current version - Boost.Iostreams is used instead. Now Boost.Process doesn't reinvent concepts or reimplement functions anymore which belong in other libraries.
> All of that makes me believe it's time for a new review.
> Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk