{"id":514,"date":"2012-05-13T21:03:38","date_gmt":"2012-05-13T20:03:38","guid":{"rendered":"http:\/\/pocoproject.org\/blog\/?p=514"},"modified":"2012-05-17T03:22:33","modified_gmt":"2012-05-17T02:22:33","slug":"poco-and-c-standard","status":"publish","type":"post","link":"https:\/\/pocoproject.org\/blog\/?p=514","title":{"rendered":"POCO and C++ Standard"},"content":{"rendered":"<p style=\"text-align: justify;\">Last week, I attended <a href=\"http:\/\/www.open-std.org\/jtc1\/sc22\/wg21\/docs\/papers\/2012\/sd-3.htm\" target=\"_blank\">WG21 Study Group<\/a> Meeting in Bellevue, WA kindly hosted by Microsoft, where SG1 (Concurrency and Parallelism) and SG4 (Networking)\u00a0participants\u00a0met to discuss the future direction and proposals for C++ standard. Study Groups are an attempt to augment the C++ standard library size to bring it on par with comparable libraries in other langues, most notably C# and Java.<\/p>\n<hr \/>\n<div id=\"attachment_515\" style=\"width: 638px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/pocoproject.org\/blog\/wp-content\/uploads\/2012\/05\/CppPortableLib.jpg\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-515\" class=\"size-full wp-image-515\" title=\"C++ Standard Library Size\" src=\"http:\/\/pocoproject.org\/blog\/wp-content\/uploads\/2012\/05\/CppPortableLib.jpg\" alt=\"C++ Standard Library Size\" width=\"628\" height=\"326\" \/><\/a><p id=\"caption-attachment-515\" class=\"wp-caption-text\">C++ Standard Library Size*<\/p><\/div>\n<hr \/>\n<p>Yes, the small purple-ish rectangle on the right is the size of C++ standard library (click on the image to see it full size); we need more and C++ deserves more than that.<\/p>\n<p style=\"text-align: justify;\">I presented <a href=\"http:\/\/pocoproject.org\/slides\/200-Network.pdf\" target=\"_blank\">Poco::Net<\/a> to the SG4 and we discussed the proposals for the standard networking library. There were two other proposals presented\/reviewed: <a href=\"http:\/\/think-async.com\/\" target=\"_blank\">asio<\/a> as the networking\/IO library and URI proposal from <a href=\"http:\/\/cpp-netlib.github.com\/latest\/index.html\" target=\"_blank\">cpp-netlib<\/a>. The consensus was that solid networking foundations should be built first &#8211; C++ standard needs networking types on which the standard network library can be built.<\/p>\n<p>The result of the discussion was a tentative\u00a0wish-list\/agenda for proposals\/implementations:<\/p>\n<p><em>2012 &#8211; URI and IPv4\/6 Address<\/em><\/p>\n<p><em> <\/em><\/p>\n<p><em>2013 &#8211; HTTP and Resolvers (DNS, maybe more)<\/em><\/p>\n<p style=\"text-align: justify;\">By this time, we&#8217;d hope to have fully defined async model (waiting on the SG1 discussion outcome). Something that is still uncertain to some extent is what exactly does std::async(std::launch::async) do &#8211; is it obligatory to \u00a0to launch an OS thread in the background or is the async behavior just &#8220;as if&#8221; the OS thread was launched, leaving room for other asynchronous back-end modes of operation.<\/p>\n<p><em>2014 &#8211; sockets, async socket streams<\/em><\/p>\n<p><em> <\/em><\/p>\n<p><em>2015 &#8211; ICMP, SSL<\/em><\/p>\n<p style=\"text-align: justify;\">As things currently stand, we will be proposing portions of POCO for standardization. G\u00fcnter and I will be working on a formal proposal for URI and IP Address, aiming to have it ready\u00a0before\u00a0the October meeting in Portland, OR. We will also soon start\u00a0working\u00a0on the Poco::Net based standard socket library proposal.<\/p>\n<p style=\"text-align: justify;\">Also, before Portland meeting, we will comb through Foundation, start weeding out code addressed by C++11 and extract a subset that would make sense to be proposed for the next round of standardization. What exactly? Dynamic typing, caching, (de)compression, processes, various streams etc etc. This list does not even get into configuration, application, options, XML, JSON, database, &#8230; all of which are called for and sorely needed.<\/p>\n<p style=\"text-align: justify;\">Our involvement in the standardization came from Herb Sutter&#8217;s <a href=\"http:\/\/channel9.msdn.com\/Events\/GoingNative\/GoingNative-2012\/C-11-VC-11-and-Beyond\" target=\"_blank\">call to C++ community<\/a> (if\u00a0impatient, scroll to 1:15 mark or just look at the picture below to get the idea) to get together and put forth an effort to create a standard C++ library\u00a0comparable\u00a0in size and utility to the one Java and C# have.<\/p>\n<hr \/>\n<div id=\"attachment_520\" style=\"width: 638px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/pocoproject.org\/blog\/wp-content\/uploads\/2012\/05\/PCL.jpg\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-520\" class=\"size-full wp-image-520\" title=\"PCL\" src=\"http:\/\/pocoproject.org\/blog\/wp-content\/uploads\/2012\/05\/PCL.jpg\" alt=\"Portable C++ Library\" width=\"628\" height=\"326\" \/><\/a><p id=\"caption-attachment-520\" class=\"wp-caption-text\">Portable C++ Library*<\/p><\/div>\n<hr \/>\n<p style=\"text-align: justify;\">As you can see from the above, the list is long, while time\/manpower is short. A well-designed, standard-compliant and highly-portable framework community like POCO has a lot to offer to the C++ effort. As usual &#8211; I am\u00a0asking\u00a0for help. Participating in standardization process can be a rewarding experience, so if you have any inclination or desire to be part of the process, by all means let us know. More baggage we can drop-off to the standard implementation, more time and better foundation we&#8217;ll have to build new features on.<\/p>\n<p>Do you want to help\/participate in POCO proposals for C++ Standard? Let us know:<\/p>\n<p><strong>at(alex, dot(pocoproject, org));<\/strong><\/p>\n<hr \/>\n<p>* <span style=\"font-size: 10px; font-weight: normal;\">Pictures from <a href=\"http:\/\/www.gotw.ca\/\" target=\"_blank\">Herb Sutter<\/a>&#8216;s &#8220;<a href=\"http:\/\/channel9.msdn.com\/Events\/GoingNative\/GoingNative-2012\/C-11-VC-11-and-Beyond\" target=\"_blank\">Going Native 2012<\/a>&#8221; presentation<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Last week, I attended WG21 Study Group Meeting in Bellevue, WA kindly hosted by Microsoft, where SG1 (Concurrency and Parallelism) and SG4 (Networking)\u00a0participants\u00a0met to discuss the future direction and proposals for C++ standard. Study Groups are an attempt to augment the C++ standard library size to bring it on par with comparable libraries in other [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8],"tags":[],"class_list":["post-514","post","type-post","status-publish","format-standard","hentry","category-news"],"_links":{"self":[{"href":"https:\/\/pocoproject.org\/blog\/index.php?rest_route=\/wp\/v2\/posts\/514","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pocoproject.org\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/pocoproject.org\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/pocoproject.org\/blog\/index.php?rest_route=\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/pocoproject.org\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=514"}],"version-history":[{"count":47,"href":"https:\/\/pocoproject.org\/blog\/index.php?rest_route=\/wp\/v2\/posts\/514\/revisions"}],"predecessor-version":[{"id":565,"href":"https:\/\/pocoproject.org\/blog\/index.php?rest_route=\/wp\/v2\/posts\/514\/revisions\/565"}],"wp:attachment":[{"href":"https:\/\/pocoproject.org\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=514"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/pocoproject.org\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=514"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/pocoproject.org\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=514"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}