Topic: Procedural Function Interfaces


Author: lisa.e.lippincott@gmail.com
Date: Wed, 7 Sep 2016 19:45:18 -0700 (PDT)
Raw View
------=_Part_146_487979941.1473302718599
Content-Type: multipart/alternative;
 boundary="----=_Part_147_661117364.1473302718599"

------=_Part_147_661117364.1473302718599
Content-Type: text/plain; charset=UTF-8



Hello world,


At C++now this year, I gave a lecture, "What is the basic interface?" In
it, I covered some of the problems involved in defining formal interfaces
for functions in a procedural language like C++, with a focus on the parts
of a function's interface that usually go without saying.


The talk was well-received, and afterward, a number of people asked me to
write a paper on the notation I used in the talk -- essentially, an
extension to C++ allowing function interfaces to be specified procedurally,
in sufficient detail to prove local correctness.


This is, of course, no small undertaking. What I've written so far is more
outline than concrete proposal, and even so, it is rather lengthy and omits
important details. But I present it here for your consideration:


<https://drive.google.com/open?id=0B4pQ0YXYmdWRYnNaRC1Vb1pmakU>


I'll be reprising "What is the basic interface?" at CppCon this month, but
meanwhile, video of my C++now presentation is on YouTube. The slides are
available separately on github. The presentation may help with
understanding the paper: it provides context, and it may be better
organized. (The video ends unexpectedly; we thought we could keep filming
after the break, but we were wrong.)


<https://youtu.be/1b_W23lyTPw>

<https://github.com/boostcon/cppnow_presentations_2016/blob/master/03_friday/what_is_the_basic_interface.pdf>


Thank you,

                 --Lisa Lippincott

--
You received this message because you are subscribed to the Google Groups "ISO C++ Standard - Future Proposals" group.
To unsubscribe from this group and stop receiving emails from it, send an email to std-proposals+unsubscribe@isocpp.org.
To post to this group, send email to std-proposals@isocpp.org.
To view this discussion on the web visit https://groups.google.com/a/isocpp.org/d/msgid/std-proposals/52f1577b-9ee8-4ddc-b6ce-9e296cef19c6%40isocpp.org.

------=_Part_147_661117364.1473302718599
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><p style=3D"font-size: 12px; line-height: normal; font-fam=
ily: Helvetica; color: rgb(69, 69, 69);">Hello world,</p>
<p style=3D"font-size: 12px; line-height: normal; font-family: Helvetica; c=
olor: rgb(69, 69, 69); min-height: 14px;"><br></p>
<p style=3D"font-size: 12px; line-height: normal; font-family: Helvetica; c=
olor: rgb(69, 69, 69);">At C++now this year, I gave a lecture, &quot;What i=
s the basic interface?&quot; In it, I covered some of the problems involved=
 in defining formal interfaces for functions in a procedural language like =
C++, with a focus on the parts of a function&#39;s interface that usually g=
o without saying.</p>
<p style=3D"font-size: 12px; line-height: normal; font-family: Helvetica; c=
olor: rgb(69, 69, 69); min-height: 14px;"><br></p>
<p style=3D"font-size: 12px; line-height: normal; font-family: Helvetica; c=
olor: rgb(69, 69, 69);">The talk was well-received, and afterward, a number=
 of people asked me to write a paper on the notation I used in the talk -- =
essentially, an extension to C++ allowing function interfaces to be specifi=
ed procedurally, in sufficient detail to prove local correctness.</p>
<p style=3D"font-size: 12px; line-height: normal; font-family: Helvetica; c=
olor: rgb(69, 69, 69); min-height: 14px;"><br></p>
<p style=3D"font-size: 12px; line-height: normal; font-family: Helvetica; c=
olor: rgb(69, 69, 69);">This is, of course, no small undertaking. What I&#3=
9;ve written so far is more outline than concrete proposal, and even so, it=
 is rather lengthy and omits important details. But I present it here for y=
our consideration:=C2=A0</p>
<p style=3D"font-size: 12px; line-height: normal; font-family: Helvetica; c=
olor: rgb(69, 69, 69); min-height: 14px;"><br></p>
<p style=3D"font-size: 12px; line-height: normal; font-family: Helvetica; c=
olor: rgb(69, 69, 69);">&lt;https://drive.google.com/open?id=3D0B4pQ0YXYmdW=
RYnNaRC1Vb1pmakU&gt;</p>
<p style=3D"font-size: 12px; line-height: normal; font-family: Helvetica; c=
olor: rgb(69, 69, 69); min-height: 14px;"><br></p>
<p style=3D"font-size: 12px; line-height: normal; font-family: Helvetica; c=
olor: rgb(69, 69, 69);">I&#39;ll be reprising &quot;What is the basic inter=
face?&quot; at CppCon this month, but meanwhile, video of my C++now present=
ation is on YouTube. The slides are available separately on github. The pre=
sentation may help with understanding the paper: it provides context, and i=
t may be better organized. (The video ends unexpectedly; we thought we coul=
d keep filming after the break, but we were wrong.)</p>
<p style=3D"font-size: 12px; line-height: normal; font-family: Helvetica; c=
olor: rgb(69, 69, 69); min-height: 14px;"><br></p>
<p style=3D"font-size: 12px; line-height: normal; font-family: Helvetica; c=
olor: rgb(69, 69, 69);">&lt;https://youtu.be/1b_W23lyTPw&gt;</p>
<p style=3D"font-size: 12px; line-height: normal; font-family: Helvetica; c=
olor: rgb(69, 69, 69);">&lt;https://github.com/boostcon/cppnow_presentation=
s_2016/blob/master/03_friday/what_is_the_basic_interface.pdf&gt;</p>
<p style=3D"font-size: 12px; line-height: normal; font-family: Helvetica; c=
olor: rgb(69, 69, 69); min-height: 14px;"><br></p>
<p style=3D"font-size: 12px; line-height: normal; font-family: Helvetica; c=
olor: rgb(69, 69, 69);">Thank you,</p>
<p style=3D"font-size: 12px; line-height: normal; font-family: Helvetica; c=
olor: rgb(69, 69, 69);">=C2=A0=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 --Lisa Lippincott</p><div><br></div></div>

<p></p>

-- <br />
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals&quot; group.<br />
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to <a href=3D"mailto:std-proposals+unsubscribe@isocpp.org">std-proposa=
ls+unsubscribe@isocpp.org</a>.<br />
To post to this group, send email to <a href=3D"mailto:std-proposals@isocpp=
..org">std-proposals@isocpp.org</a>.<br />
To view this discussion on the web visit <a href=3D"https://groups.google.c=
om/a/isocpp.org/d/msgid/std-proposals/52f1577b-9ee8-4ddc-b6ce-9e296cef19c6%=
40isocpp.org?utm_medium=3Demail&utm_source=3Dfooter">https://groups.google.=
com/a/isocpp.org/d/msgid/std-proposals/52f1577b-9ee8-4ddc-b6ce-9e296cef19c6=
%40isocpp.org</a>.<br />

------=_Part_147_661117364.1473302718599--

------=_Part_146_487979941.1473302718599--

.


Author: Patrice Roy <patricer@gmail.com>
Date: Wed, 7 Sep 2016 23:26:51 -0400
Raw View
--001a114473a0d3493c053bf69999
Content-Type: text/plain; charset=UTF-8

How nice of you. I'll gladly read it (although it make take a few weeks due
to the pre-CppCon workload :) ). Thanks!

2016-09-07 22:45 GMT-04:00 <lisa.e.lippincott@gmail.com>:

> Hello world,
>
>
> At C++now this year, I gave a lecture, "What is the basic interface?" In
> it, I covered some of the problems involved in defining formal interfaces
> for functions in a procedural language like C++, with a focus on the parts
> of a function's interface that usually go without saying.
>
>
> The talk was well-received, and afterward, a number of people asked me to
> write a paper on the notation I used in the talk -- essentially, an
> extension to C++ allowing function interfaces to be specified procedurally,
> in sufficient detail to prove local correctness.
>
>
> This is, of course, no small undertaking. What I've written so far is more
> outline than concrete proposal, and even so, it is rather lengthy and omits
> important details. But I present it here for your consideration:
>
>
> <https://drive.google.com/open?id=0B4pQ0YXYmdWRYnNaRC1Vb1pmakU>
>
>
> I'll be reprising "What is the basic interface?" at CppCon this month, but
> meanwhile, video of my C++now presentation is on YouTube. The slides are
> available separately on github. The presentation may help with
> understanding the paper: it provides context, and it may be better
> organized. (The video ends unexpectedly; we thought we could keep filming
> after the break, but we were wrong.)
>
>
> <https://youtu.be/1b_W23lyTPw>
>
> <https://github.com/boostcon/cppnow_presentations_2016/
> blob/master/03_friday/what_is_the_basic_interface.pdf>
>
>
> Thank you,
>
>                  --Lisa Lippincott
>
> --
> You received this message because you are subscribed to the Google Groups
> "ISO C++ Standard - Future Proposals" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to std-proposals+unsubscribe@isocpp.org.
> To post to this group, send email to std-proposals@isocpp.org.
> To view this discussion on the web visit https://groups.google.com/a/
> isocpp.org/d/msgid/std-proposals/52f1577b-9ee8-4ddc-
> b6ce-9e296cef19c6%40isocpp.org
> <https://groups.google.com/a/isocpp.org/d/msgid/std-proposals/52f1577b-9ee8-4ddc-b6ce-9e296cef19c6%40isocpp.org?utm_medium=email&utm_source=footer>
> .
>

--
You received this message because you are subscribed to the Google Groups "ISO C++ Standard - Future Proposals" group.
To unsubscribe from this group and stop receiving emails from it, send an email to std-proposals+unsubscribe@isocpp.org.
To post to this group, send email to std-proposals@isocpp.org.
To view this discussion on the web visit https://groups.google.com/a/isocpp.org/d/msgid/std-proposals/CAKiZDp1GNuiOnqneRtazfGnS2cb%2BZuDChUigS5Oj9HuEhAGHpQ%40mail.gmail.com.

--001a114473a0d3493c053bf69999
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">How nice of you. I&#39;ll gladly read it (although it make=
 take a few weeks due to the pre-CppCon workload :) ). Thanks!<br></div><di=
v class=3D"gmail_extra"><br><div class=3D"gmail_quote">2016-09-07 22:45 GMT=
-04:00  <span dir=3D"ltr">&lt;<a href=3D"mailto:lisa.e.lippincott@gmail.com=
" target=3D"_blank">lisa.e.lippincott@gmail.com</a>&gt;</span>:<br><blockqu=
ote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1px #ccc s=
olid;padding-left:1ex"><div dir=3D"ltr"><p style=3D"font-size:12px;line-hei=
ght:normal;font-family:Helvetica;color:rgb(69,69,69)">Hello world,</p>
<p style=3D"font-size:12px;line-height:normal;font-family:Helvetica;color:r=
gb(69,69,69);min-height:14px"><br></p>
<p style=3D"font-size:12px;line-height:normal;font-family:Helvetica;color:r=
gb(69,69,69)">At C++now this year, I gave a lecture, &quot;What is the basi=
c interface?&quot; In it, I covered some of the problems involved in defini=
ng formal interfaces for functions in a procedural language like C++, with =
a focus on the parts of a function&#39;s interface that usually go without =
saying.</p>
<p style=3D"font-size:12px;line-height:normal;font-family:Helvetica;color:r=
gb(69,69,69);min-height:14px"><br></p>
<p style=3D"font-size:12px;line-height:normal;font-family:Helvetica;color:r=
gb(69,69,69)">The talk was well-received, and afterward, a number of people=
 asked me to write a paper on the notation I used in the talk -- essentiall=
y, an extension to C++ allowing function interfaces to be specified procedu=
rally, in sufficient detail to prove local correctness.</p>
<p style=3D"font-size:12px;line-height:normal;font-family:Helvetica;color:r=
gb(69,69,69);min-height:14px"><br></p>
<p style=3D"font-size:12px;line-height:normal;font-family:Helvetica;color:r=
gb(69,69,69)">This is, of course, no small undertaking. What I&#39;ve writt=
en so far is more outline than concrete proposal, and even so, it is rather=
 lengthy and omits important details. But I present it here for your consid=
eration:=C2=A0</p>
<p style=3D"font-size:12px;line-height:normal;font-family:Helvetica;color:r=
gb(69,69,69);min-height:14px"><br></p>
<p style=3D"font-size:12px;line-height:normal;font-family:Helvetica;color:r=
gb(69,69,69)">&lt;<a href=3D"https://drive.google.com/open?id=3D0B4pQ0YXYmd=
WRYnNaRC1Vb1pmakU" target=3D"_blank">https://drive.google.com/<wbr>open?id=
=3D<wbr>0B4pQ0YXYmdWRYnNaRC1Vb1pmakU</a>&gt;</p>
<p style=3D"font-size:12px;line-height:normal;font-family:Helvetica;color:r=
gb(69,69,69);min-height:14px"><br></p>
<p style=3D"font-size:12px;line-height:normal;font-family:Helvetica;color:r=
gb(69,69,69)">I&#39;ll be reprising &quot;What is the basic interface?&quot=
; at CppCon this month, but meanwhile, video of my C++now presentation is o=
n YouTube. The slides are available separately on github. The presentation =
may help with understanding the paper: it provides context, and it may be b=
etter organized. (The video ends unexpectedly; we thought we could keep fil=
ming after the break, but we were wrong.)</p>
<p style=3D"font-size:12px;line-height:normal;font-family:Helvetica;color:r=
gb(69,69,69);min-height:14px"><br></p>
<p style=3D"font-size:12px;line-height:normal;font-family:Helvetica;color:r=
gb(69,69,69)">&lt;<a href=3D"https://youtu.be/1b_W23lyTPw" target=3D"_blank=
">https://youtu.be/1b_W23lyTPw</a>&gt;</p>
<p style=3D"font-size:12px;line-height:normal;font-family:Helvetica;color:r=
gb(69,69,69)">&lt;<a href=3D"https://github.com/boostcon/cppnow_presentatio=
ns_2016/blob/master/03_friday/what_is_the_basic_interface.pdf" target=3D"_b=
lank">https://github.com/boostcon/<wbr>cppnow_presentations_2016/<wbr>blob/=
master/03_friday/what_is_<wbr>the_basic_interface.pdf</a>&gt;</p>
<p style=3D"font-size:12px;line-height:normal;font-family:Helvetica;color:r=
gb(69,69,69);min-height:14px"><br></p>
<p style=3D"font-size:12px;line-height:normal;font-family:Helvetica;color:r=
gb(69,69,69)">Thank you,</p>
<p style=3D"font-size:12px;line-height:normal;font-family:Helvetica;color:r=
gb(69,69,69)">=C2=A0=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 --Lisa Lippincott</p><span class=3D"HOEnZb"><font color=3D"#888888"><div><=
br></div></font></span></div><span class=3D"HOEnZb"><font color=3D"#888888"=
>

<p></p>

-- <br>
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals&quot; group.<br>
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to <a href=3D"mailto:std-proposals+unsubscribe@isocpp.org" target=3D"_=
blank">std-proposals+unsubscribe@<wbr>isocpp.org</a>.<br>
To post to this group, send email to <a href=3D"mailto:std-proposals@isocpp=
..org" target=3D"_blank">std-proposals@isocpp.org</a>.<br>
To view this discussion on the web visit <a href=3D"https://groups.google.c=
om/a/isocpp.org/d/msgid/std-proposals/52f1577b-9ee8-4ddc-b6ce-9e296cef19c6%=
40isocpp.org?utm_medium=3Demail&amp;utm_source=3Dfooter" target=3D"_blank">=
https://groups.google.com/a/<wbr>isocpp.org/d/msgid/std-<wbr>proposals/52f1=
577b-9ee8-4ddc-<wbr>b6ce-9e296cef19c6%40isocpp.org</a><wbr>.<br>
</font></span></blockquote></div><br></div>

<p></p>

-- <br />
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals&quot; group.<br />
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to <a href=3D"mailto:std-proposals+unsubscribe@isocpp.org">std-proposa=
ls+unsubscribe@isocpp.org</a>.<br />
To post to this group, send email to <a href=3D"mailto:std-proposals@isocpp=
..org">std-proposals@isocpp.org</a>.<br />
To view this discussion on the web visit <a href=3D"https://groups.google.c=
om/a/isocpp.org/d/msgid/std-proposals/CAKiZDp1GNuiOnqneRtazfGnS2cb%2BZuDChU=
igS5Oj9HuEhAGHpQ%40mail.gmail.com?utm_medium=3Demail&utm_source=3Dfooter">h=
ttps://groups.google.com/a/isocpp.org/d/msgid/std-proposals/CAKiZDp1GNuiOnq=
neRtazfGnS2cb%2BZuDChUigS5Oj9HuEhAGHpQ%40mail.gmail.com</a>.<br />

--001a114473a0d3493c053bf69999--

.


Author: Jacob Lifshay <programmerjake@gmail.com>
Date: Fri, 9 Sep 2016 09:46:48 -0700 (PDT)
Raw View
------=_Part_1064_1907718269.1473439608185
Content-Type: text/plain; charset=UTF-8

Though I havn't checked particularly closely, it seems to me as though you unintentionally made it invalid to have a recursive inline function.

--
You received this message because you are subscribed to the Google Groups "ISO C++ Standard - Future Proposals" group.
To unsubscribe from this group and stop receiving emails from it, send an email to std-proposals+unsubscribe@isocpp.org.
To post to this group, send email to std-proposals@isocpp.org.
To view this discussion on the web visit https://groups.google.com/a/isocpp.org/d/msgid/std-proposals/73681aad-1ed2-477b-be2c-d23b3286cc00%40isocpp.org.

------=_Part_1064_1907718269.1473439608185--

.


Author: Lisa Lippincott <lisa.e.lippincott@gmail.com>
Date: Fri, 9 Sep 2016 11:54:49 -0700 (PDT)
Raw View
------=_Part_5085_1463304471.1473447289463
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

It certainly wasn't my intention to rule out recursive inline functions in =
general; I meant to rule them out only when the recursive path re-enters en=
ters an assertion or epilogue without exiting it. And non-interface inline =
functions don't even have an epilogue.

I think recursive inline functions are going to be important when we get to=
 global reasoning about infinite recursion.  Asserting a recursive inline f=
unction in a prologue provides a way to associate a recursion rank with a f=
unction call, and lets us distinguish rank-reducing calls from calls that d=
on't reduce rank.

--=20
You received this message because you are subscribed to the Google Groups "=
ISO C++ Standard - Future Proposals" group.
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to std-proposals+unsubscribe@isocpp.org.
To post to this group, send email to std-proposals@isocpp.org.
To view this discussion on the web visit https://groups.google.com/a/isocpp=
..org/d/msgid/std-proposals/930561cc-bc0b-4073-bd9e-3531135f4bf6%40isocpp.or=
g.

------=_Part_5085_1463304471.1473447289463--

.