Boost.Beast inclusion into standard library?

439 views
Skip to first unread message

Osman Zakir

unread,
Nov 1, 2017, 12:58:39 PM11/1/17
to ISO C++ Standard - Discussion
Is there any possibility that the Beast library which is being added to Beast in version 1.66.0 will be standardized at some point?  I would really like to see support for web services and web-based applications in the C++ standard library.  It's a programming language like C++, though, so I know it's going to be limited to the back-end and other server-side stuff like Python.  But that's good, too.  I just want C++ to be as good as better than Python if possible.  I really like the language.  

Along with that, a HTML template like Python's Jinja would be good to have.  WTemplate is only for Wt, and other template libraries aren't up-to-date enough.  There's NLTemplate, but I don't know how to check when it was last updated.  

Aarón Bueno Villares

unread,
Nov 1, 2017, 3:05:35 PM11/1/17
to ISO C++ Standard - Discussion
For templates you can use the google's CTemplates: https://github.com/OlafvdSpek/ctemplate

Osman Zakir

unread,
Nov 1, 2017, 4:47:51 PM11/1/17
to ISO C++ Standard - Discussion
Is that library up to date?  There's only a .sln file for VS2015 from a year ago.  There do seem to be updates from just a few months ago, though, which I guess is a good thing?

Well, that's good, but what about the standard library's support for web apps/services?  It's not good that a lot of former C++ programmers moved to other languages, is it?

Tony V E

unread,
Nov 1, 2017, 8:55:10 PM11/1/17
to ISO C++ Standard - Discussion
IIUC, Beast's author wants to some day make a proposal based on Beast. But not until it has gained experience via Boost. 

Of course you could just use the Boost version today.

Sent from my BlackBerry portable Babbage Device
From: Osman Zakir
Sent: Wednesday, November 1, 2017 12:58 PM
To: ISO C++ Standard - Discussion
Subject: [std-discussion] Boost.Beast inclusion into standard library?

Is there any possibility that the Beast library which is being added to Beast in version 1.66.0 will be standardized at some point?  I would really like to see support for web services and web-based applications in the C++ standard library.  It's a programming language like C++, though, so I know it's going to be limited to the back-end and other server-side stuff like Python.  But that's good, too.  I just want C++ to be as good as better than Python if possible.  I really like the language.  

Along with that, a HTML template like Python's Jinja would be good to have.  WTemplate is only for Wt, and other template libraries aren't up-to-date enough.  There's NLTemplate, but I don't know how to check when it was last updated.  

--

---
You received this message because you are subscribed to the Google Groups "ISO C++ Standard - Discussion" group.
To unsubscribe from this group and stop receiving emails from it, send an email to std-discussio...@isocpp.org.
To post to this group, send email to std-dis...@isocpp.org.
Visit this group at https://groups.google.com/a/isocpp.org/group/std-discussion/.

vinnie...@gmail.com

unread,
Nov 10, 2017, 12:11:06 PM11/10/17
to ISO C++ Standard - Discussion
On Wednesday, November 1, 2017 at 9:58:39 AM UTC-7, Osman Zakir wrote:
Is there any possibility that the Beast library which is being added to Beast in version 1.66.0 will be standardized at some point?  I would really like to see support for web services and web-based applications in the C++ standard library.  It's a programming language like C++, though, so I know it's going to be limited to the back-end and other server-side stuff like Python.  But that's good, too.  I just want C++ to be as good as better than Python if possible.  I really like the language.

Greetings! I appreciate the enthusiasm (I'm the Beast author). As Tony indicated, there is a plan to write up a proposal for making Beast part of the standard library. It will depend on the Networking TS, which is still not yet part of the standard library.

On that note, there has been an unfortunate trend of library papers being written for direct standardization. While this can work for certain gifted individuals or particular libraries it does not seem sustainable. I don't consider myself to be particularly great at designing libraries. I feel that the chance of me designing a "perfect" HTTP interface on the first try that will handle all potential use-cases, and satisfy everyone, are slim to none. This is why I am giving Beast a few years to mature in response to feedback from a growing user-base. I am sure that between now and the time I start writing a paper, there will be API changes (hopefully for the better!)

I agree that C++ needs great web services, it is long past due. Beast fulfills the role of a low-level protocol layering of HTTP and WebSocket on top of raw Boost.Asio. I think having a robust low-level interface is critical for building middleware networking components and then high level components such as complete clients and servers. While I'm working on some of these middleware components (URIs, server certificate authentication, proxy configuration) it is a large task for one person. That is why I hope that after the imminent release of Beast into Boost 1.66.0 (December 2017) we will see other authors inspired to build out some of these components.

For example, I would love to see someone port this library which handles HTTP mime-types to work with the "Body" concept in Beast:

Mimetic library:
<http://www.codesink.org/mimetic_mime_library.html>

Body concept:
<http://www.boost.org/doc/libs/master/libs/beast/doc/html/beast/concepts/Body.html>

Cppcon 2017 Presentation describing a Body concept:
<https://www.youtube.com/watch?v=WsUnnYEKPnI>

Anyone with an interest in seeing Beast evolve and help with the design and testing of new features is encouraged to participate in the GitHub Issues for the project, which allow read/write by the public:
<https://github.com/boostorg/beast/issues>

Thanks!

Osman Zakir

unread,
Dec 1, 2017, 7:37:35 PM12/1/17
to ISO C++ Standard - Discussion
On Wednesday, November 1, 2017 at 9:58:39 PM UTC+5, Osman Zakir wrote:
Is there any possibility that the Beast library which is being added to Beast in version 1.66.0 will be standardized at some point?  I would really like to see support for web services and web-based applications in the C++ standard library.  It's a programming language like C++, though, so I know it's going to be limited to the back-end and other server-side stuff like Python.  But that's good, too.  I just want C++ to be as good as better than Python if possible.  I really like the language.  

Along with that, a HTML template like Python's Jinja would be good to have.  WTemplate is only for Wt, and other template libraries aren't up-to-date enough.  There's NLTemplate, but I don't know how to check when it was last updated.  

I'm also completely new to developing a library (though I'm also new to Networking programming itself, C++ or not).  Right now I'm reading Dr. Stroustrup's book PPP2 (downloaded it).  I'm about to start on Chapter 21.  I'm working on a custom list class and a custom vector class I started while following in the book.  I'm having trouble with the former.  I want to learn Asio and Beast when I have a chance and then use them to develop my own HTTP server and library.  I'd like some tutorials on that that I can read first, though. 

Osman Zakir

unread,
Dec 1, 2017, 7:46:41 PM12/1/17
to ISO C++ Standard - Discussion
I meant to say "HTTP server and client library".  Forgot to type "server" there.  
Message has been deleted

Osman Zakir

unread,
Dec 10, 2017, 11:13:11 AM12/10/17
to ISO C++ Standard - Discussion
I need to ask: What are the plans of the committee concerning the Networking, Ranges, Modules, Coroutines and Concepts TSes?  It seem like Concepts, Modules and Coroutines will be in if all continues to go well in discussions in committee meetings, but what about Networking and Ranges?  When can we expect them to make it in?  I hope that Networking (well, really, most of the TSes including Networking that couldn't be in C++17) will be in C++20 or 23 (20 preferably).  

Metaclasses and the three proposals it depends on will hopefully also make it in ASAP.  Take that and the above too as a request from a user.  And the "spaceship operator" also sounds like a great proposal to be added to the standard.  

Nicol Bolas

unread,
Dec 10, 2017, 11:45:09 AM12/10/17
to ISO C++ Standard - Discussion
On Sunday, December 10, 2017 at 11:13:11 AM UTC-5, Osman Zakir wrote:
I need to ask: What are the plans of the committee concerning the Networking, Ranges, Modules, Coroutines and Concepts TSes?

This is not really the place to ask that question. The forum on future proposals would be more reasonable.
 
It seem like Concepts, Modules and Coroutines will be in if all continues to go well in discussions in committee meetings, but what about Networking and Ranges?  When can we expect them to make it in?

You can't "expect" any of them to make it in. The committee will move on them as they see fit. The Ranges and Networking TS's were only recently approved for publication, so there was no way they could have made it in before they were actually finished.

And the "spaceship operator" also sounds like a great proposal to be added to the standard.  

That was voted in at the last meeting.

Osman Zakir

unread,
Dec 11, 2017, 3:19:12 PM12/11/17
to ISO C++ Standard - Discussion
On Sunday, December 10, 2017 at 9:45:09 PM UTC+5, Nicol Bolas wrote:
On Sunday, December 10, 2017 at 11:13:11 AM UTC-5, Osman Zakir wrote:
I need to ask: What are the plans of the committee concerning the Networking, Ranges, Modules, Coroutines and Concepts TSes?

This is not really the place to ask that question. The forum on future proposals would be more reasonable.

Where can I find that (if this isn't a stupid question)?
 
It seem like Concepts, Modules and Coroutines will be in if all continues to go well in discussions in committee meetings, but what about Networking and Ranges?  When can we expect them to make it in?

You can't "expect" any of them to make it in. The committee will move on them as they see fit. The Ranges and Networking TS's were only recently approved for publication, so there was no way they could have made it in before they were actually finished. 
 
What does being approved publication mean, exactly?  That the committee just finished working on them and that they might make it in with a future update, or what?

And the "spaceship operator" also sounds like a great proposal to be added to the standard.  

That was voted in at the last meeting.

So it'll be in C++20?  That's great news if so.   

Nicol Bolas

unread,
Dec 11, 2017, 3:58:57 PM12/11/17
to ISO C++ Standard - Discussion


On Monday, December 11, 2017 at 3:19:12 PM UTC-5, Osman Zakir wrote:
On Sunday, December 10, 2017 at 9:45:09 PM UTC+5, Nicol Bolas wrote:
On Sunday, December 10, 2017 at 11:13:11 AM UTC-5, Osman Zakir wrote:
I need to ask: What are the plans of the committee concerning the Networking, Ranges, Modules, Coroutines and Concepts TSes?

This is not really the place to ask that question. The forum on future proposals would be more reasonable.

Where can I find that (if this isn't a stupid question)?

Here's a list of all of the ISO C++ forums.

It seem like Concepts, Modules and Coroutines will be in if all continues to go well in discussions in committee meetings, but what about Networking and Ranges?  When can we expect them to make it in?

You can't "expect" any of them to make it in. The committee will move on them as they see fit. The Ranges and Networking TS's were only recently approved for publication, so there was no way they could have made it in before they were actually finished. 
 
What does being approved publication mean, exactly?  That the committee just finished working on them and that they might make it in with a future update, or what?

Hmm. I was going to link to an ISOcpp.org page explaining how TS's work, but apparently... there isn't one.

In any case, a Technical Specification is an ISO companion document to the actual ISO standard. They specify additional language or library features, and conforming C++ implementations may or may not implement them as they see fit. These are used for larger features that the committee wants to get feedback on before trying to adopt them into the standard.

Since TS's are ISO documents, they have to go through a process to be published. Until they're actually published, they're just draft proposals and can change before publication.

Whether Ranges or Networking make it into a future C++ standard is up to the committee, and it's unlikely they would make it in without at least a few changes here and there. But the first step on that path is getting a TS finalized.


Osman Zakir

unread,
Dec 12, 2017, 5:01:33 PM12/12/17
to ISO C++ Standard - Discussion
Okay, thanks for the info.  So what stage of the process is a TS in after it's been approved for publication?  And is there really no good place where I can read about how TS's work on my own?

I'll check out the link you gave.  Thanks for that, too.

Greg Marr

unread,
Dec 13, 2017, 8:58:22 PM12/13/17
to ISO C++ Standard - Discussion
On Tuesday, December 12, 2017 at 5:01:33 PM UTC-5, Osman Zakir wrote:
Hmm. I was going to link to an ISOcpp.org page explaining how TS's work, but apparently... there isn't one.
And is there really no good place where I can read about how TS's work on my own?

It's at least partially covered here https://isocpp.org/std/the-life-of-an-iso-proposal

Reply all
Reply to author
Forward
0 new messages