Re: Cairo and ISO C++

Michael McLaughlin <[email protected]>
Newsgroups gmane.comp.lib.cairo
Message-ID <CAL_=NOouWJ4vrvRBrphfKNLXs0KPK2-AncsmVmy-D03PmEzVtA@mail.gmail.com>
The reference implementation is now posted to GitHub:
https://github.com/mikebmcl/N3888_RefImpl . It currently requires Windows
(tested on 7 and 8.1) with Visual Studio 2013 (the free Visual Studio 2013
Express for Windows Desktop works fine).

I'm hoping we will have a GNU/Linux X11-based (or maybe XCB-based) build
using GCC sometime in the near future but I can't make any promises. (The
code is mostly standard, portable C++ with only a handful of
Windows-specific things, most of which relate to the entry point and
creating a window. So it's almost entirely a matter of finding the time to
create a project file system using CMake or Autotools. The past few days
have been pretty quiet and thus productive but now with the reference
implementation rolling out there could be a lot of feedback, questions, and
concerns that need attention. So we'll see. It shouldn't be difficult to do
a quick and dirty port if you want to try it out on a different platform).

Also, I can't promise there are no bugs. I've found and squashed several
this week but there may be more lurking which will show up when I have a
chance to really test the functionality.

Thanks!

-Mike

(p.s. Apologies to those who read this in multiple places since I am
copying and pasting the same release message because I'm exhausted and want
to get to sleep!)


On Mon, Jan 20, 2014 at 7:16 PM, Michael McLaughlin <[email protected]>wrote:

> Hi!
>
> I wanted to give everyone an update. Earlier today a proposal that Herb,
> Jason, and I have been working on, N3888: A Proposal to Add 2D Graphics
> Rendering and Display to C++, was published here:
> http://isocpp.org/files/papers/N3888.pdf . The main focus of the proposal
> is a series of rules that enable a mechanical transformation from the cairo
> API to an API that is in the style of the C++ Standard Library (the STL).
>
> We expect to present the proposal for feedback at the Issaquah, WA
> meeting of the ISO C++ Committee (PDF)<http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3707.pdf>which runs from Feb. 10 - Feb. 15, 2014 (I will personally be there from
> mid-day Monday through Wednesday). We do not expect that the proposal is
> final and we are soliciting feedback on it from everyone who is interested.
> This includes all of you. We are hopeful that you will all be receptive to
> the approach we have taken and are supportive of the concept (even if you
> might have some ideas about how to make technical improvements).
>
> There is a reference implementation that is nearly ready. When it is
> complete I will post a link to the Git repository for it. The
> implementation right now is built on Windows using Visual Studio 2013 (it
> will work fine with the free Express for Windows Desktop version), but
> there's no reason it cannot run on a GNU/Linux or *BSD environment with a
> few changes. I hope to have some time in the next week or two to create a
> version using GCC on Ubuntu, but I can't make any promises.
>
> For those curious about the process, we will be presenting the proposal in
> Issaquah and will receive feedback on it (both there and from other places,
> including here). We expect that the general concept will be well received
> (though there's always a slight chance that it won't be) and that we will
> get a lot of constructive criticism. We will take that feedback and proceed
> to amend the proposal. Others may also propose amendments (either
> informally to us or formally through an N numbered paper). When we are
> ready, we will publish the amended document and present it at a future
> meeting of the ISO C++ committee. (There are generally two a year; one in
> North America and one in Europe or Asia, though sometimes (such as this
> year) there are additional meetings). The ultimate goal is to reach a point
> where everyone is satisfied with the proposal, in which case a formal vote
> would take place and it would be adopted as a Technical Specification. TSs
> are not formally part of the standard but are things which are likely to
> become part of the standard in the future. The various compilers (GCC,
> Clang, Visual C++, Intel C++, IBM C++, etc.) implement TSs so that the C++
> community can experiment with them and flush out any issues or problems
> that weren't discovered earlier. If all goes well, the TS would
> subsequently be adopted as part of the ISO C++ language standard, at which
> point it would officially become part of the C++ Standard (specifically the
> C++ Standard Library). The goal of all of this is for C++ programmers to be
> able to render and display 2D graphics by writing standard code which will
> compile and run regardless of which compiler or operating system the
> developer uses and targets. We consider portable, standards-compliant code
> to be a great thing and we are excited to tackle the problem of
> standardizing 2D graphics and are thrilled to create a design that uses
> cairo as its basis.
>
> If you do decide to read the paper (or play with the code once it is
> released), do note that we were intentionally conservative in some of the
> transformations and that we expect the proposal to evolve and change over
> time. When I am back from Issaquah, I hope to be able to revisit all of the
> great suggestions in this thread and work on drawing up amendments based
> upon the ideas that fit with the proposal.
>
> Thanks again for your time and for all the great work you've done
> individually and as a community in creating cairo. It is a masterful
> accomplishment and I'm really glad I've had the opportunity to work with it
> for this project!
>
> Respectfully yours,
>
> Michael B. McLaughlin
>
>
>
> On Tue, Dec 31, 2013 at 9:23 PM, Herb Sutter <[email protected]>wrote:
>
>> Hi, my name is Herb Sutter and I chair the ISO C++ standards committee.
>> Behdad referred me to this list as the right place to raise this question:
>>
>>
>>
>> We are actively looking at the potential standardization of a basic 2D
>> drawing library for ISO C++, and would like to base it on (or outright
>> adopt, possibly as a binding) solid prior art in the form of an existing
>> library. You can find a quick summary of goals and discussions to date in
>> these two papers:
>>
>> ·         http://isocpp.org/files/papers/n3791.html
>>
>> ·         http://isocpp.org/files/papers/N3825.pdf
>>
>>
>>
>> As noted in the latter paper, we are currently investigating the
>> direction of proposing a mechanically C++-ified version of Cairo.
>> Specifically, “mechanically C++-ified” means taking Cairo as-is and
>> transforming it with a one-page list of mechanical changes such as turning
>> _create functions into constructors, (mystruct*, int length) function
>> parameters to vector<struct>& parameters, that sort of thing – the design
>> and abstractions and functions are unchanged. This would also allow us to
>> track Cairo as it evolves in the future, by continuing to reapply the same
>> rules to new updates to Cairo.
>>
>>
>>
>> We know about Cairomm but it seems to have languished so we are focused
>> on current Cairo as a starting point, even though it’s not C++ -- we
>> believe Cairo itself it is very well written C (already in an OO style,
>> already const-correct, etc.).
>>
>>
>>
>> We want to make sure we’re doing this in the right way and with the
>> group’s approval, so your feedback would be much appreciated. Also, we
>> might want to reuse parts of the Cairo documentation in our specification,
>> which we understand is governed by MPL 1.1, and we would like to know if
>> this would be all right with your group.
>>
>>
>>
>> Thanks, and best wishes,
>>
>>
>>
>> Herb
>>
>>
>>
>>
>>
>
>

-- 
cairo mailing list
[email protected]
http://lists.cairographics.org/mailman/listinfo/cairo
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.