[context] 4 days left on Boost.Context mini-review

Hi All, This is a call for reviewers for Boost.Context. The mini review period will end the 11th of this month and we only had 1 review so far and we were expecting a few more. We had some interesting discussions on the original review period and quite a few people were involved, so anybody who has an interest in boost.context please write a review. thank you all, -- gpd

Giovanni Piero Deretta wrote:
Hi All,
This is a call for reviewers for Boost.Context. The mini review period will end the 11th of this month and we only had 1 review so far and we were expecting a few more.
We had some interesting discussions on the original review period and quite a few people were involved, so anybody who has an interest in boost.context please write a review.
thank you all,
I've been very pleased with your coroutine library for some time. I liked the complete documentation. I aways wondered why it wasn't reviewed and accepted into boost. For my own purposes I made a couple of tweaks which made it header only - when helped me a lot. I looked over the documentation of this library. My question is: what is the relationship between this library and your coroutine library. Would this be a lower level component of the coroutine library. What are the future plans for the coroutine library - if any. I had presumed you just lost interest in persuing a boost revew and just dropped of the map, Now I see you're handling the review for this component. Is there any back story here? Downloading from the git repo - clicking on the link - in the documentation didn't work for me. Is there alternative way to get the source to have look? I was curious to know whether there is a good reason for not making it header only. Robert Ramey

Hello Robert,
I looked over the documentation of this library. My question is: what is the relationship between this library and your coroutine library. Would this be a lower level component of the coroutine library.
boost.context is intended to work as the base for libraries like boost.coroutine. It implements the context switching facility via assembler and provides a low level API (C-like) and a more comfortable context class (accepts functors). The reason for implementing boost.context was, that the ucontext API on UNIX systems is dropped by the POSIX standard (boost.coroutine used ucontext API). For instance the standard glibc doesn't implements ucontext API on ARM. Windows provides the Fiber API - I read some rumors that MS plans to dropp this API in the future (in a book from a MS lead developer). The Fiber API has some drawbacks like the user can't use/reuse its own stack (Fiber API allocates/deallocates the stack by itself). With boost.context the developers should become a lib which is avaliable on most platforms (I think on the problems the LUA and FACTOR developers have had with this stuff). The docu contains a section 'Rational' where is discuss in short ucontext and MS Fiber API (beside of longjump/setjump).
Downloading from the git repo - clicking on the link - in the documentation didn't work for me.
Because your fiber doen't know protocol git. On the console you can just type in: git clone git://github.com/olk/boost.context.git
Is there alternative way to get the source to have look?
GitHub website: http://github.com/olk/boost.context zip from GitHub: http://github.com/olk/boost.context/zipball/master
I was curious to know whether there is a good reason for not making it header only.
because the lib contains assembler :) Oliver -- Empfehlen Sie GMX DSL Ihren Freunden und Bekannten und wir belohnen Sie mit bis zu 50,- Euro! https://freundschaftswerbung.gmx.de

On 01/09/2012 08:20 AM, Oliver Kowalke wrote:
I was curious to know whether there is a good reason for not making it header only.
because the lib contains assembler :)
Inline assembly could be header-only. Visual Studio doesn't support inline assembly on x86-64 though. I assume it does, however, support linking against assembly objects.

On 01/10/2012 01:24 AM, Mathias Gaunard wrote:
On 01/09/2012 08:20 AM, Oliver Kowalke wrote:
I was curious to know whether there is a good reason for not making it header only.
because the lib contains assembler :)
Inline assembly could be header-only. Visual Studio doesn't support inline assembly on x86-64 though. I assume it does, however, support linking against assembly objects.
This was already mentioned in other parts of the thread, sorry. I was too lazy to read the whole thing first ;)

On Mon, Jan 9, 2012 at 12:58 AM, Robert Ramey <ramey@rrsd.com> wrote:
I've been very pleased with your coroutine library for some time. I liked the complete documentation. I aways wondered why it wasn't reviewed and accepted into boost.
Well, I wasn't actually completely pleased with the documentation. A real reference section was missing for example. I also always wanted to tweak the implementation. Then life happened, I got a job and since then never had enough time to commit to matain it to boost standards. [...]
I looked over the documentation of this library. My question is: what is the relationship between this library and your coroutine library. Would this be a lower level component of the coroutine library.
Definitely yes. I would say that boost.context contains the equivaleent of about 90% of boost.coroutine (and more). The rest is mostly sintactic sugar which can be easily implemented in C++11 with variadic templates. Note that Boost.Context has a much more comprehensive set of backends: while Boost.Coroutine only had a Linux x86 asm backend and relied on fibers or makecontext for portability, Boost.Context has a much much larger number of native implementations.
What are the future plans for the coroutine library - if any. I had presumed you just lost interest in persuing a boost revew and just dropped of the map, Now I see you're handling the review for this component. Is there any back story here?
No real back story. While I couldn't give enough time for the Coroutine library, I was naturally interested in Boost.Context. If Boost.Context were to be accepted I might try to get Oliver to accept patches to add the missing parts. If you want that to happens, a review of Boost.Context would be very wellcome :) I'll leave Oliver to answer the rest of the questions. -- gpd

Giovanni Piero Deretta wrote:
On Mon, Jan 9, 2012 at 12:58 AM, Robert Ramey <ramey@rrsd.com> wrote:
Note that Boost.Context has a much more comprehensive set of backends: while Boost.Coroutine only had a Linux x86 asm backend and relied on fibers or makecontext for portability,
I"m a window ms user and I found this unsatisfactory so I re-implemented the context switch in inline assembly. This had the effect of making the library header only. Is it really necessary that Boost.Context be a compiled library? Robert Ramey

On Mon, Jan 9, 2012 at 5:36 PM, Robert Ramey <ramey@rrsd.com> wrote:
Giovanni Piero Deretta wrote:
On Mon, Jan 9, 2012 at 12:58 AM, Robert Ramey <ramey@rrsd.com> wrote:
Note that Boost.Context has a much more comprehensive set of backends: while Boost.Coroutine only had a Linux x86 asm backend and relied on fibers or makecontext for portability,
I"m a window ms user and I found this unsatisfactory so I re-implemented the context switch in inline assembly. This had the effect of making the library header only. Is it really necessary that Boost.Context be a compiled library?
IIRC, at least on amd64 VC++ does not allow inline assembly at all. With GCC, you could probably write some working inline assembly, but any compiler upgrade (or even optimization flag) could break it at any moment as jumping out of inline assember is forbidden. Getting the correct register clobbering flags is also non-trivial. -- gpd

Am 09.01.2012 18:36, schrieb Robert Ramey:
On Mon, Jan 9, 2012 at 12:58 AM, Robert Ramey<ramey@rrsd.com> wrote: Note that Boost.Context has a much more comprehensive set of backends: while Boost.Coroutine only had a Linux x86 asm backend and relied on fibers or makecontext for portability, I"m a window ms user and I found this unsatisfactory so I re-implemented
Giovanni Piero Deretta wrote: the context switch in inline assembly. This had the effect of making the library header only. Is it really necessary that Boost.Context be a compiled library?
Robert Ramey
_______________________________________________ Unsubscribe& other changes: http://lists.boost.org/mailman/listinfo.cgi/boost
inline assembly is not allways supported - for instance newer version of MS VC on x86_64 and itanium: http://msdn.microsoft.com/en-us/library/4ks26t93.aspx Oliver

This is a call for reviewers for Boost.Context. The mini review period will end the 11th of this month and we only had 1 review so far and we were expecting a few more.
We had some interesting discussions on the original review period and quite a few people were involved, so anybody who has an interest in boost.context please write a review.
Apologies if that's been mentioned somewhere, but is there some description of what has changed since the initial review? I'm particularly interested in the code. Is it all in the GIT repository? I'm hoping to be able to pick up from there, but then I still have this reminder for the second half of my Atomic review popping up every so often ... Thanks! -hg -------------------------------------------------------------------------- NOTICE: Morgan Stanley is not acting as a municipal advisor and the opinions or views contained herein are not intended to be, and do not constitute, advice within the meaning of Section 975 of the Dodd-Frank Wall Street Reform and Consumer Protection Act. If you have received this communication in error, please destroy all electronic and paper copies and notify the sender immediately. Mistransmission is not intended to waive confidentiality or privilege. Morgan Stanley reserves the right, to the extent permitted under applicable law, to monitor electronic communications. This message is subject to terms available at the following link: http://www.morganstanley.com/disclaimers. If you cannot access these links, please notify us by reply message and we will send the contents to you. By messaging with Morgan Stanley you consent to the foregoing.

Hi Holger,
Apologies if that's been mentioned somewhere, but is there some description of what has changed since the initial review? I'm particularly interested in the code. Is it all in the GIT repository?
I'm sorry - it's a different git repo. Most noticeable changes: - pass data between context jumps - Win64 MASM generates exception handlers reags, Oliver -- Empfehlen Sie GMX DSL Ihren Freunden und Bekannten und wir belohnen Sie mit bis zu 50,- Euro! https://freundschaftswerbung.gmx.de

I'll do a review, but I won't have time until the day the 11th itself. On 2012.01.08 21.54, Giovanni Piero Deretta wrote:
Hi All,
This is a call for reviewers for Boost.Context. The mini review period will end the 11th of this month and we only had 1 review so far and we were expecting a few more.
We had some interesting discussions on the original review period and quite a few people were involved, so anybody who has an interest in boost.context please write a review.
thank you all,
-- gpd
_______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost
-- Bryce Lelbach aka wash STE||AR Group, Center for Computation and Science, LSU -- boost-spirit.com stellar.cct.lsu.edu llvm.wiki.kernel.org
participants (6)
-
Bryce Lelbach
-
Giovanni Piero Deretta
-
Grund, Holger (ISGT)
-
Mathias Gaunard
-
Oliver Kowalke
-
Robert Ramey