[Valid Atom 1.0] This is a valid Atom 1.0 feed.


This feed is valid, but interoperability with the widest range of feed readers could be improved by implementing the following recommendations.


  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <feed xmlns="">
  3.    <title>The Perl Foundation</title>
  4.    <link rel="alternate" type="text/html" href="" />
  5.    <link rel="self" type="application/atom+xml" href="" />
  6.    <id>,2010-03-22://18</id>
  7.    <updated>2017-05-14T15:42:30Z</updated>
  9.    <generator uri="">Movable Type Pro 6.2.2</generator>
  11. <entry>
  12.    <title>Maintaining the Perl 5 Core: April 2017 report</title>
  13.    <link rel="alternate" type="text/html" href="" />
  14.    <id>,2017://18.3872</id>
  16.    <published>2017-05-14T15:00:00Z</published>
  17.    <updated>2017-05-14T15:42:30Z</updated>
  19.    <summary>This is a monthly report by Dave Mitchell on his grant under Perl 5 Core Maintenance Fund. We thank the TPF sponsors to make this grant possible. The main things I did last month were: * Fixd require&apos;s &quot;Can&apos;t locate&quot; error message so that it only mentions @INC if @INC was actually searched, and only gives the &quot;you may need to install&quot; hint if the filename maps to a valid module name. * fixed up the usage of &apos;do&apos; in...</summary>
  20.    <author>
  21.        <name>Makoto Nozaki</name>
  22.        <uri></uri>
  23.    </author>
  25.        <category term="Grants" scheme="" />
  28.    <content type="html" xml:lang="en-us" xml:base="">
  29.        <![CDATA[<p>This is a monthly report by Dave Mitchell on his grant under <a href="">Perl 5 Core Maintenance Fund</a>. We thank the TPF sponsors to make this grant possible.</p>
  31. <pre>
  32. The main things I did last month were:
  34. * Fixd require's "Can't locate" error message so that it only mentions
  35.  @INC if @INC was actually searched, and only gives the "you may need to
  36.  install" hint if the filename maps to a valid module name.
  38. * fixed up the usage of 'do' in core and made tests run without '.' in
  39.  @INC.  It turns out that all core tests were being run with '.' in @INC
  40.  even when that was no longer set by default by the perl interpreter. I
  41.  removed that, and then fixed up the issues it revealed.
  43. * I made a start on a proof-of-concept branch which stores short strings
  44.  directly in the body of an SV.
  46. </pre>
  47. ]]>
  48.        <![CDATA[<pre>
  49. SUMMARY:
  50.     14:28 RT #131098 Error message for require "./" is wrong
  51.      2:26 RT #131124 threads::shared panic
  52.      2:09 RT #131126 various 5.24.1 test failure issues
  53.      6:44 fix up usage of 'do' in core
  54.      6:00 investigate short-string PVs
  55.      7:30 make tests run without '.' in @INC
  56.      3:01 perldelta entry for the [email protected] issue
  57.      0:31 process p5p mailbox
  58.    ------
  59.     42:49 TOTAL (HH::MM)
  62. 185.0 weeks
  63. 2591.8 total hours
  64.  14.0 average hours per week
  66. There are 208 hours left on the grant
  67. </pre>
  68. ]]>
  69.    </content>
  70. </entry>
  72. <entry>
  73.    <title>OSCON 2017 Wednesday Update</title>
  74.    <link rel="alternate" type="text/html" href="" />
  75.    <id>,2017://18.3871</id>
  77.    <published>2017-05-11T09:00:00Z</published>
  78.    <updated>2017-05-18T07:09:22Z</updated>
  80.    <summary>The first full day of OSCON sessions, the expo hall, and the hallway track was fun and interesting as always. The Perl Foundation has a great booth this year, right by the O&apos;Reilly booth. We had a great day talking to Perl programmers new and veteran about what&apos;s new in the Perl community and in their Perl projects. It&apos;s also great to see that O&apos;Reilly still shows the love for Perl. We&apos;re looking forward to another great day. If you&apos;re...</summary>
  81.    <author>
  82.        <name>Jim Brandt</name>
  83.        <uri></uri>
  84.    </author>
  87.    <content type="html" xml:lang="en-us" xml:base="">
  88.        <![CDATA[<p>The first full day of <a href="">OSCON</a> sessions, the expo hall, and the hallway track was fun and interesting as always. The Perl Foundation has a great booth this year, right by the O'Reilly booth. We had a great day talking to Perl programmers new and veteran about what's <a href="">new in the Perl community</a> and in their Perl projects.</p>
  90. <p><img alt="oscon_booth_small.jpg" src="" width="500" class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" /></p>
  92. <p>It's also great to see that O'Reilly still shows the love for Perl.</p>
  94. <p><img alt="oscon_camel_small.jpg" src="" width="500" class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" /></p>
  96. <p>We're looking forward to another great day. If you're at OSCON, stop by the booth.</p>
  97. ]]>
  99.    </content>
  100. </entry>
  102. <entry>
  103.    <title>TPF at OSCON 2017</title>
  104.    <link rel="alternate" type="text/html" href="" />
  105.    <id>,2017://18.3870</id>
  107.    <published>2017-05-09T09:00:00Z</published>
  108.    <updated>2017-05-09T14:05:47Z</updated>
  110.    <summary>The Perl Foundation is excited to have a booth at OSCON again this year. As part of our booth information and outreach we&apos;ve put together a summary of some of the activities in the Perl world from 2016. Perl 5 The Perl 5 teams continued the steady release of new versions of Perl 5 with the release of 5.24 in 2016. This release included enhancements to regular expressions, Unicode 8.0 support, and security updates. A full list of changes for...</summary>
  111.    <author>
  112.        <name>Jim Brandt</name>
  113.        <uri></uri>
  114.    </author>
  117.    <content type="html" xml:lang="en-us" xml:base="">
  118.        <![CDATA[<p>The Perl Foundation is excited to have a booth at <a href="">OSCON</a> again this year. As part of our booth information and outreach we've put together a summary of some of the activities in the Perl world from 2016.</p>
  120. <h2>Perl 5</h2>
  122. <p>The Perl 5 teams continued the steady release of new versions of Perl 5 with the release of 5.24 in 2016. This release included enhancements to regular expressions, Unicode 8.0 support, and security updates. A full list of changes for all perl versions is available in the <a href="">perl history part of the perl documentation</a>.</p>
  124. <p>Looking forward, the upcoming 5.26 release includes numerous speed improvements (including speedier subroutine signatures), Unicode 9.0 support, indented here-documents, and many bug fixes.</p>
  126. <p>The following events supported continued development on the Perl 5 ecosystem:</p>
  128. <ul>
  129. <li><a href="">Perl QA Hackathon</a></li>
  130. <li><a href="">Perl 5 Core Hackathon</a></li>
  131. </ul>
  133. <h2>Perl 6</h2>
  135. <p>In 2016 the emphasis in Perl 6 development has been on stability and performance enhancements. An example of this is a 2.5x speed improvement for a common task such as reading a CSV file with the pure Perl 6 version of Text::CSV. Also, memory usage has dropped significantly in 2016, making it easier to run Perl 6 on smaller devices. Using Perl 5 modules (e.g. from CPAN) using Inline::Perl5 has also become 2x as fast. Check out <a href="">Perl 6 Weekly</a> if you want to keep up-to-date on Perl 6 development.</p>
  137. <p>In addition to Perl 6 development, brian d foy held a <a href="">successful Kickstarter campaign</a> to fund writing “Learning Perl 6” in the same tradition as O’Reilly’s successful <a href="">“Learning Perl”</a>.</p>
  139. <h2>Over $1 Million in Grants Awarded</h2>
  141. <p>The Perl Foundation passed a significant milestone in 2016: since the Foundation’s inception, we have awarded over one million dollars in grants! With the help of our generous supporters, we have made a significant impact on Perl. That legacy continues with these grants awarded from last year:</p>
  143. <h3>Perl 5 Grants</h3>
  145. <ul>
  146. <li>Maintaining Perl 5 (Tony Cook)</li>
  147. <li>Maintaining the Perl 5 Core (David Mitchell)</li>
  148. <li>QA Hackathon Travel (Ricardo Signes)</li>
  149. </ul>
  151. <h3>Perl 6 Grants</h3>
  153. <ul>
  154. <li>Perl 6 Release Goals (Jonathan Worthington)</li>
  155. <li>Perl 6 Performance and Reliability Engineering (Jonathan Worthington)</li>
  156. <li>Update on JavaScript Backend For Rakudo (Paweł Murias)</li>
  157. </ul>
  159. <h3>Traditional Grants</h3>
  161. <ul>
  162. <li>RPerl User Documentation (Will Braswell)</li>
  163. <li>Test::Simple/Stream Stabilization (Chad 'Exodist' Granum)</li>
  164. <li>Test2 Manual (Chad 'Exodist' Granum)</li>
  165. <li>Standardization, Test Coverage, and Documentation of Perl 6 I/O Routines (Zoffix Znet)</li>
  166. <li>Improving the Robustness of Unicode Support in Rakudo on MoarVM (Samantha McVey)</li>
  167. </ul>
  169. <p>This work is made possible by our many sponsors, including:</p>
  171. <ul>
  172. <li><a href=""></a></li>
  173. <li><a href="">cPanel</a></li>
  174. <li><a href="">Craigslist</a></li>
  175. <li><a href="">Bluehost</a></li>
  176. <li><a href="">Signature Information Solutions LLC</a></li>
  177. <li><a href="">Grant Street Group</a></li>
  178. <li><a href="">Assurant Mortgage Solutions</a></li>
  179. </ul>
  181. <h2>MetaCPAN</h2>
  183. <p>MetaCPAN is a search engine for CPAN, the Perl module hosting system ( It has brought a huge amount of new metadata to perl modules since its launch in 2015. This year, the team completed a project to update nearly all of the components of the site and version the API. Details of the project are available in <a href="">blog posts from the team</a>.</p>
  185. <p>CPAN itself continues to be a reliable resource for providing access to over 180,000 Perl modules in over 35,000 distributions. You can view the status of the CPAN mirror network any time on the <a href="">mirrors site</a> and even see a map of <a href="">where they are located worldwide</a>.</p>
  187. <h2>Perl Events</h2>
  189. <p>2016 continued the tradition of holding Perl events worldwide. The Perl Conference (formerly YAPC) was held in Orlando in the US and Romania in Europe along with many smaller workshops and one-day events. <a href="">The Perl Conference in the US</a> this year is in Alexandria, VA, and in <a href="">Amsterdam in Europe</a>.</p>
  190. ]]>
  192.    </content>
  193. </entry>
  195. <entry>
  196.    <title>Test2 Documentation Grant Progress Report</title>
  197.    <link rel="alternate" type="text/html" href="" />
  198.    <id>,2017://18.3869</id>
  200.    <published>2017-05-03T11:27:12Z</published>
  201.    <updated>2017-05-03T11:30:49Z</updated>
  203.    <summary>Chad Granun has been working on his Test2 documentation grant, sharing the time with a new family member (congratulations, Chad). Although there are not big changes on the documentation, itself, Chad has been working on an update to the Event API for Test2. That is now almost complete, he will soon put it out for trial, and then stable. Once released he will be able to move back to Test2-Manual where he will document the new API, how it is...</summary>
  204.    <author>
  205.        <name>Alberto Simões</name>
  206.        <uri></uri>
  207.    </author>
  209.        <category term="Grants" scheme="" />
  211.    <category term="test2documentationgrant" label="Test2-Documentation-Grant" scheme="" />
  213.    <content type="html" xml:lang="en-us" xml:base="">
  214.        <![CDATA[<p>Chad Granun has been working on his Test2 documentation grant, sharing the time with a new family member (congratulations, Chad). Although there are not big changes
  215. on the documentation, itself, Chad has been working on an update to the Event API for Test2. That is now almost complete, he will soon put it out for trial,
  216. and then stable. Once released he will be able to move back to Test2-Manual where he will document the new API, how it is compatible with the old API
  217. but richer, and how to work with both versions.</p>
  218. ]]>
  220.    </content>
  221. </entry>
  223. <entry>
  224.    <title>March 2017 Grant Votes</title>
  225.    <link rel="alternate" type="text/html" href="" />
  226.    <id>,2017://18.3868</id>
  228.    <published>2017-04-27T00:04:17Z</published>
  229.    <updated>2017-04-27T01:44:36Z</updated>
  231.    <summary></summary>
  232.    <author>
  233.        <name>Coke</name>
  235.    </author>
  237.        <category term="Grants" scheme="" />
  240.    <content type="html" xml:lang="en-us" xml:base="">
  242.        <![CDATA[<p>The Grants Committee has concluded the voting of the March 2017 round.</p>
  244. <p>There were two proposals in this round:</p>
  246. <h1>Improving the Robustness of Unicode Support…</h1>
  248. <p><a href="">Improving the Robustness of Unicode Support in Rakudo on MoarVM (7,500 USD)</a></p>
  250. <p>Voting results: 6 Yes votes, and 2 abstentions with a score of 21 (5+5+5+4+1+1+0+0)</p>
  252. <p>This grant is approved, and will be funded.</p>
  254. <p>Sam's previous contributions in this area make her likely to succeed in making marked improvements to the
  255. (already good!) Unicode support in Rakudo Perl 6 on MoarVM.</p>
  257. <h1>RPerl User Documentation, Part 3</h1>
  259. <p><a href="">RPerl User Documentation, Part 3 (2,400 USD)</a></p>
  261. <p>Voting results: 8 No votes.</p>
  263. <p>This grant is not approved.</p>
  265. <p>Concerns were raised about the efficacy of previous grants to increase RPerl's userbase and outreach,
  266. as well as concerns about interactions with other members of the Perl community.</p>
  268. <h1>Next Round </h1>
  270. <p>Our next round will be in May.
  271. You can <a href="" title="submit proposals">submit proposals</a> now.
  272. If you want to help funding, please visit <a href="" title="our donations page">our donations page</a>
  273. We appreciate all the donors which made the grant
  274. program possible. Also see the <a href="" title="press releases">press releases</a> for
  275. the recent major donations.</p>
  276. ]]>
  277.    </content>
  278. </entry>
  280. <entry>
  281.    <title> Perl 6 IO Grant: April 2017 Report</title>
  282.    <link rel="alternate" type="text/html" href="" />
  283.    <id>,2017://18.3867</id>
  285.    <published>2017-04-26T01:56:42Z</published>
  286.    <updated>2017-04-26T01:59:07Z</updated>
  288.    <summary></summary>
  289.    <author>
  290.        <name>Coke</name>
  292.    </author>
  294.        <category term="Grants" scheme="" />
  297.    <content type="html" xml:lang="en-us" xml:base="">
  299.        <![CDATA[<p><em>Zoffix Znet provided this report on April 19, 2017</em></p>
  301. <h1>Perl 6 IO TPF Grant: Monthly Report (April, 2017)</h1>
  303. <p>This document is the April, 2017 progress report for <a href="">TPF Standardization,
  304. Test Coverage, and Documentation of Perl 6 I/O Routines
  305. grant</a></p>
  307. <h2>Timing</h2>
  309. <p>As proposed to and approved by the Grant Manager, I've extended the due date
  310. for this grant by 1 extra month, in exchange for doing some extra optimization
  311. work on IO routines at no extra cost. The new completion date is May 22nd;
  312. right after the next Rakudo compiler release.</p>
  314. <h2>Communications</h2>
  316. <p>I've created and published three notices as part of this grant, informing the
  317. users on what is changing and how to best upgrade their code, where needed:</p>
  319. <ul>
  320. <li><a href="">Upgrade Information for Changes Due to IO Grant Work</a></li>
  321. <li><a href="">PART 2: Upgrade Information for Changes Due to IO Grant Work</a></li>
  322. <li><a href="">PART 3: Information on Changes Due to IO Grant Work</a></li>
  323. </ul>
  325. <h2>IO Action Plan Progress</h2>
  327. <p>Most of the <a href="">IO Action Plan</a> has been implemented and got shipped in Rakudo's 2017.04.2 release. The remaining items are:</p>
  329. <ul>
  330. <li>Implement better way to signal closed handle status (was omited from release due to original suggestion to do this not being ideal; likely better to do this on the VM end)</li>
  331. <li>Implement IO::CatHandle as a generalized IO::ArgFiles (was omited from release because it was decided to make it mostly-usable wherever IO::Handle can be used, and IO::ArgFiles is far from that, having only a handful of methods implemented)</li>
  332. <li>Optimization of the way we perform <code>stat</code> calls for multiple file tests (entirely internal that requires no changes to users' code)</li>
  333. </ul>
  335. <h2>Documentation and Coverage Progress</h2>
  337. <p>In my spreadsheet with all the IO routines and their candidates, the totals
  338. show that 40% have been documented and tested. Some of the remaining 60% may
  339. already have tests/docs added when implementing IO Action Plan or ealier and
  340. merely need checking and verification.</p>
  342. <h2>Optimizations</h2>
  344. <p>Some of the optimizations I promised to deliver in exchange for grant deadline
  345. extension were already done on IO::Spec::Unix and IO::Path
  346. routines and have made it into the 2017.04.2 release. Most of the optimizations
  347. that will be done in the upcoming month will be done in IO::Spec::Win32 and
  348. will largely affect Windows users.</p>
  350. <h4>IO Optimizations in 2017.04.2 Done by Other Core Members:</h4>
  352. <ul>
  353. <li>Elizabeth Mattijsen made .slurp 2x faster <a href="">rakudo/b4d80c0</a></li>
  354. <li>Samantha McVey made nqp::index—which is used in path operations—2x faster <a href="">rakudo/f1fc879</a></li>
  355. <li>IO::Pipe.lines was made 3.2x faster by relying on work done by Elizabeth Mattijsen <a href="">rakudo/0c62815</a></li>
  356. </ul>
  358. <h2>Tickets Resolved</h2>
  360. <p>The following tickets have been resolved as part of the grant:</p>
  362. <ul>
  363. <li><a href="">RT#130460 Can we relax indir's test on the target directory?</a>: Resolved by making indir's default test to be only <code>:d</code></li>
  364. <li><a href="">RT#130900: nul in pathname</a>: Resolved by checking the path for nul and throwing when found</li>
  365. <li><a href="">RT#127407: [RFC] (1) add method IO::Path.stemname; (2) expand method</a>: RFC rejected, but the described functionality is now available via the .extension method that was made much more powerful as part of IO Action Plan</li>
  366. </ul>
  368. <p>Possibly more tickets were addressed by the IO Action Plan implementation, but
  369. they still need further review.</p>
  371. <h2>Bugs Fixed</h2>
  373. <ul>
  374. <li>Fixed a bug in <code>IO::Path.resolve</code> with combiners tucked on the path
  375. separator. Fix in
  376. <a href="">rakudo/9d8e391f3b</a>;
  377. tests in
  378. <a href="">roast/92217f75ce</a>. The bug was identified by Timo Paulssen while testing secure implementation of IO::Path.child</li>
  379. </ul>
  381. <h4>IO Bug Fixes in 2017.04.2 Done by Other Core Members:</h4>
  383. <ul>
  384. <li>Timo Paulssen fixed a bug with IO::Path types not being accepted by
  385. <code>is native</code> NativeCall trait <a href="">rakudo/99840804</a></li>
  386. <li>Elizabeth Mattijsen fixed an issue in assignment to dynamics. This made it possible to <code>temp</code> <code>$*TMPDIR</code> variable <a href="">rakudo/1b9d53</a></li>
  387. <li>Jonathan Worthington fixed a crash when slurping large files in binary mode with &amp;slurp or IO::Path.slurp <a href="">rakudo/d0924f1a2</a></li>
  388. <li>Jonathan Worthington fixed a bug with binary slurp reading zero bytes when another thread is causing a lot of GC <a href="">rakudo/756877e</a></li>
  389. </ul>
  391. <h2>Commits</h2>
  393. <p>So far, I've commited 192 IO grant commits to rakudo/roast/doc repos.</p>
  395. <h3>Rakudo</h3>
  397. <p>69 IO grant commits:</p>
  399. <ul>
  400. <li><a href=""><code>c6fd736</code></a> <code>Make about 63x faster</code></li>
  401. <li><a href=""><code>7112a08</code></a> <code>Add :D on invocant for file tests</code></li>
  402. <li><a href=""><code>8bacad8</code></a> <code>Implement IO::Path.sibling</code></li>
  403. <li><a href=""><code>a98b285</code></a> <code>Remove IO::Path.child-secure</code></li>
  404. <li><a href=""><code>0b5a41b</code></a> <code>Rename IO::Path.concat-with to .add</code></li>
  405. <li><a href=""><code>9d8e391</code></a> <code>Fix IO::Path.resolve with combiners; timotimo++</code></li>
  406. <li><a href=""><code>1887114</code></a> <code>Implement IO::Path.child-secure</code></li>
  407. <li><a href=""><code>b8458d3</code></a> <code>Reword method child for cleaner code</code></li>
  408. <li><a href=""><code>51e4629</code></a> <code>Amend rules for last part in IO::Path.resolve</code></li>
  409. <li><a href=""><code>9a2446c</code></a> <code>Move Bool return value to signature</code></li>
  410. <li><a href=""><code>214198b</code></a> <code>Implement proper args for IO::Handle.lock</code></li>
  411. <li><a href=""><code>c95c4a7</code></a> <code>Make IO::Path/IO::Special do IO role</code></li>
  412. <li><a href=""><code>fd503f8</code></a> <code>grant] Remove role IO and its .umask method"</code></li>
  413. <li><a href=""><code>0e36bb2</code></a> <code>Make IO::Spec::Win32!canon-cat 2.3x faster</code></li>
  414. <li><a href=""><code>40217ed</code></a> <code>Swap .child to .concat-with in all the guts</code></li>
  415. <li><a href=""><code>490ffd1</code></a> <code>Do not use self.Str in IO::Path errors</code></li>
  416. <li><a href=""><code>1f689a9</code></a> <code>Fix up IO::Handle.Str</code></li>
  417. <li><a href=""><code>c01ebea</code></a> <code>Make IO::Path.mkdir return invocant on success</code></li>
  418. <li><a href=""><code>d46e8df</code></a> <code>Add IO::Pipe .path and .IO methods</code></li>
  419. <li><a href=""><code>6ee71c2</code></a> <code>Coerce mode in IO::Path.mkdir to Int</code></li>
  420. <li><a href=""><code>0d9ecae</code></a> <code>Remove multi-dir &amp;mkdir</code></li>
  421. <li><a href=""><code>ff97083</code></a> <code>Straighten up rename, move, and copy</code></li>
  422. <li><a href=""><code>7f73f92</code></a> <code>Make private</code></li>
  423. <li><a href=""><code>da1dea2</code></a> <code>Fix &amp;symlink and &amp;link</code></li>
  424. <li><a href=""><code>8c09c84</code></a> <code>Fix symlink and link routines</code></li>
  425. <li><a href=""><code>90da80f</code></a> <code>Rework read methods in IO::Path/IO::Handle</code></li>
  426. <li><a href=""><code>c13480c</code></a> <code>IO::Path.slurp: make 12%-35% faster; propagate Failures</code></li>
  427. <li><a href=""><code>f1b4af7</code></a> <code>Implement IO::Handle.slurp</code></li>
  428. <li><a href=""><code>184d499</code></a> <code>Make IO::Handle.Supply respect handle's mode</code></li>
  429. <li><a href=""><code>b6838ee</code></a> <code>Remove .f check in .z</code></li>
  430. <li><a href=""><code>6a8d63d</code></a> <code>Implement :completely param in IO::Path.resolve</code></li>
  431. <li><a href=""><code>e681498</code></a> <code>Make IO::Path throw when path contains NUL byte</code></li>
  432. <li><a href=""><code>b4358af</code></a> <code>Delete code for IO::Spec::Win32.catfile</code></li>
  433. <li><a href=""><code>0a442ce</code></a> <code>Remove type constraint in IO::Spec::Cygwin.canonpath</code></li>
  434. <li><a href=""><code>0c8bef5</code></a> <code>Implement :parent in IO::Spec::Cygwin.canonpath</code></li>
  435. <li><a href=""><code>a0b82ed</code></a> <code>Make IO::Path::* actually instantiate a subclass</code></li>
  436. <li><a href=""><code>67f06b2</code></a> <code>Run S32-io/io-special.t test file</code></li>
  437. <li><a href=""><code>954e69e</code></a> <code>Fix return value of IO::Special methods</code></li>
  438. <li><a href=""><code>a432b3d</code></a> <code>Remove IO::Path.abspath (part 2)</code></li>
  439. <li><a href=""><code>94a6909</code></a> <code>Clean up IO::Spec::Unix.abs2rel a bit</code></li>
  440. <li><a href=""><code>966a7e3</code></a> <code>Implement IO::Path.concat-with</code></li>
  441. <li><a href=""><code>50aea2b</code></a> <code>Restore IO::Handle.IO</code></li>
  442. <li><a href=""><code>15a25da</code></a> <code>Fix ambiguity in empty extension vs no extension</code></li>
  443. <li><a href=""><code>b1e7a01</code></a> <code>Implement IO::Path.extension 2.0</code></li>
  444. <li><a href=""><code>b62d1a7</code></a> <code>Give $*TMPDIR a container</code></li>
  445. <li><a href=""><code>099512b</code></a> <code>Clean up and improve all spurt routines</code></li>
  446. <li><a href=""><code>cb27bce</code></a> <code>Clean up &amp;open and</code></li>
  447. <li><a href=""><code>4c31903</code></a> <code>Add S32-io/chdir-process.t to list of test files to run</code></li>
  448. <li><a href=""><code>5464b82</code></a> <code>Improve &amp;*chdir</code></li>
  449. <li><a href=""><code>2483d68</code></a> <code>Fix regression in &amp;chdir's failure mode</code></li>
  450. <li><a href=""><code>ca1acb7</code></a> <code>Fix race in &amp;indir(IO::Path …)</code></li>
  451. <li><a href=""><code>a0ef2ed</code></a> <code>Improve &amp;chdir, &amp;indir, and IO::Path.chdir</code></li>
  452. <li><a href=""><code>aa62cd5</code></a> <code>Remove &amp;tmpdir and &amp;homedir</code></li>
  453. <li><a href=""><code>a5800a1</code></a> <code>Implement IO::Handle.spurt</code></li>
  454. <li><a href=""><code>36ad92a</code></a> <code>Remove 15 methods from IO::Handle</code></li>
  455. <li><a href=""><code>87987c2</code></a> <code>Remove role IO and its .umask method</code></li>
  456. <li><a href=""><code>9d8d7b2</code></a> <code>Log all changes to plan made during review period</code></li>
  457. <li><a href=""><code>0c7e4a0</code></a> <code>Do not capture args in .IO method</code></li>
  458. <li><a href=""><code>c360ac2</code></a> <code>Fix smartmatch of Cool ~~ IO::Path</code></li>
  459. <li><a href=""><code>fa9aa47</code></a> <code>Make R::I::SET_LINE_ENDING_ON_HANDLE 4.1x Faster</code></li>
  460. <li><a href=""><code>0111f10</code></a> <code>Make IO::Spec::Unix.catdir 3.9x Faster</code></li>
  461. <li><a href=""><code>4fdebc9</code></a> <code>Make IO::Spec::Unix.split 36x Faster</code></li>
  462. <li><a href=""><code>dcf1bb2</code></a> <code>Make IO::Spec::Unix.rel2abs 35% faster</code></li>
  463. <li><a href=""><code>55abc6d</code></a> <code>Improve IO::Path.child perf on *nix</code></li>
  464. <li><a href=""><code>4032953</code></a> <code>Make 75% faster</code></li>
  465. <li><a href=""><code>a01d679</code></a> <code>Remove IO::Path.pipe</code></li>
  466. <li><a href=""><code>212cc8a</code></a> <code>Remove IO::Path.Bridge</code></li>
  467. <li><a href=""><code>76f7187</code></a> <code>Do not cache IO::Path.e results</code></li>
  468. <li><a href=""><code>dd4dfb1</code></a> <code>Fix crash in IO::Special .WHICH/.Str</code></li>
  469. </ul>
  471. <h3>Perl 6 Specification</h3>
  473. <p>47 IO grant commits:</p>
  475. <ul>
  476. <li><a href=""><code>3b36d4d</code></a> <code>Test IO::Path.sibling</code></li>
  477. <li><a href=""><code>7a063b5</code></a> <code>Fudge .child-secure tests</code></li>
  478. <li><a href=""><code>39677c4</code></a> <code>IO::Path.concat-with got renamed to .add</code></li>
  479. <li><a href=""><code>92217f7</code></a> <code>Test IO::Path.child-secure with combiners</code></li>
  480. <li><a href=""><code>f3c5dae</code></a> <code>Test IO::Path.child-secure</code></li>
  481. <li><a href=""><code>a716962</code></a> <code>Amend rules for last part in IO::Path.resolve</code></li>
  482. <li><a href=""><code>4194755</code></a> <code>Test IO::Handle.lock/.unlock</code></li>
  483. <li><a href=""><code>64ff572</code></a> <code>Cover IO::Path/IO::Pipe's .Str/.path/.IO</code></li>
  484. <li><a href=""><code>637500d</code></a> <code>Spec IO::Pipe.path/.IO returns IO::Path type object</code></li>
  485. <li><a href=""><code>8fa49e1</code></a> <code>Test link routines</code></li>
  486. <li><a href=""><code>416b746</code></a> <code>Test symlink routines</code></li>
  487. <li><a href=""><code>d4353b6</code></a> <code>Rewrite .l on broken symlinks test</code></li>
  488. <li><a href=""><code>7e4a2ae</code></a> <code>Swap .slurp-rest to .slurp</code></li>
  489. <li><a href=""><code>a4c53b0</code></a> <code>Use bin IO::Handle to test its .Supply</code></li>
  490. <li><a href=""><code>feecaf0</code></a> <code>Expand file tests</code></li>
  491. <li><a href=""><code>a809f0f</code></a> <code>Expand IO::Path.resolve tests</code></li>
  492. <li><a href=""><code>ee7f05b</code></a> <code>Move is-path sub to top so it can be reused</code></li>
  493. <li><a href=""><code>b16fbd3</code></a> <code>Add tests to check nul byte is rejected</code></li>
  494. <li><a href=""><code>8f73ad8</code></a> <code>Change \0 roundtrip test to \t roundtrip test</code></li>
  495. <li><a href=""><code>7c7fbb4</code></a> <code>Cover :parent arg in IO::Spec::Cygwin.canonpath</code></li>
  496. <li><a href=""><code>896033a</code></a> <code>Cover IO::Spec::QNX.canonpath</code></li>
  497. <li><a href=""><code>c3c51ed</code></a> <code>Cover IO::Spec::Win32.basename</code></li>
  498. <li><a href=""><code>d8707e7</code></a> <code>Cover IO::Spec::Unix.basename</code></li>
  499. <li><a href=""><code>bd8d167</code></a> <code>Test IO::Path::* instantiate a subclass</code></li>
  500. <li><a href=""><code>43ec543</code></a> <code>Cover methods of IO::Special</code></li>
  501. <li><a href=""><code>e5dc376</code></a> <code>Expand IO::Path.accessed tests</code></li>
  502. <li><a href=""><code>0e47f25</code></a> <code>Test IO::Path.concat-with</code></li>
  503. <li><a href=""><code>305f206</code></a> <code>Test empty-string extensions in IO::Path.extension</code></li>
  504. <li><a href=""><code>2f09f18</code></a> <code>Fix incorrect test</code></li>
  505. <li><a href=""><code>b23e53e</code></a> <code>Test IO::Path.extension</code></li>
  506. <li><a href=""><code>1d4e881</code></a> <code>Test $*TMPDIR can be temped</code></li>
  507. <li><a href=""><code>79ff022</code></a> <code>Expand &amp;spurt and IO::Path.spurt tests</code></li>
  508. <li><a href=""><code>ba3e7be</code></a> <code>Merge S32-io/path.t and S32-io/io-path.t</code></li>
  509. <li><a href=""><code>3c4e81b</code></a> <code>Test IO::Path.Str works as advertised</code></li>
  510. <li><a href=""><code>86c5f9c</code></a> <code>Delete qp{} tests</code></li>
  511. <li><a href=""><code>430ab89</code></a> <code>Test &amp;*chdir</code></li>
  512. <li><a href=""><code>86f79ce</code></a> <code>Expand &amp;chdir tests</code></li>
  513. <li><a href=""><code>73a5448</code></a> <code>Remove two fudged &amp;chdir tests</code></li>
  514. <li><a href=""><code>04333b3</code></a> <code>Test &amp;indir fails with non-existent paths by default</code></li>
  515. <li><a href=""><code>bd46836</code></a> <code>Amend &amp;indir race tests</code></li>
  516. <li><a href=""><code>f48198f</code></a> <code>Test &amp;indir</code></li>
  517. <li><a href=""><code>5a7a365</code></a> <code>Expand IO::Spec::*.tmpdir tests</code></li>
  518. <li><a href=""><code>14b6844</code></a> <code>Use Numeric instead of IO role in dispatch test</code></li>
  519. <li><a href=""><code>8d6ca7a</code></a> <code>Cover IO::Path.ACCEPTS</code></li>
  520. <li><a href=""><code>091931a</code></a> <code>Expand &amp;open tests</code></li>
  521. <li><a href=""><code>465795c</code></a> <code>Test IO::Path.lines(*) does not crash</code></li>
  522. <li><a href=""><code>63370fe</code></a> <code>Test IO::Special .WHICH/.Str do not crash</code></li>
  523. </ul>
  525. <h3>Documentation</h3>
  527. <p>76 IO grant commits:</p>
  529. <ul>
  530. <li><a href=""><code>61cb776</code></a> <code>Document IO::Path.sibling</code></li>
  531. <li><a href=""><code>b9c9117</code></a> <code>Toss IO::Path.child-secure</code></li>
  532. <li><a href=""><code>6ca67e4</code></a> <code>Start sketching out Definitive IO Guide™</code></li>
  533. <li><a href=""><code>81a5806</code></a> <code>Amend IO::Path.resolve: :completely</code></li>
  534. <li><a href=""><code>c5524ef</code></a> <code>Rename IO::Path.concat-with to .add</code></li>
  535. <li><a href=""><code>3145979</code></a> <code>Document IO::Path.child-secure</code></li>
  536. <li><a href=""><code>160c6a2</code></a> <code>Document IO::Handle.lock/.unlock</code></li>
  537. <li><a href=""><code>53f2b99</code></a> <code>Document role IO's new purpose</code></li>
  538. <li><a href=""><code>2aaf12a</code></a> <code>Document IO::Handle.Str</code></li>
  539. <li><a href=""><code>bd4fa68</code></a> <code>Document IO::Handle/IO::Pipe.IO</code></li>
  540. <li><a href=""><code>fd8a5ed</code></a> <code>Document IO::Pipe.path</code></li>
  541. <li><a href=""><code>8d95371</code></a> <code>Expand IO::Handle/IO::Pipe.path docs</code></li>
  542. <li><a href=""><code>60b9227</code></a> <code>Change return value for mkdir</code></li>
  543. <li><a href=""><code>47b0526</code></a> <code>Explicitly spell out caveats of IO::Path.Str</code></li>
  544. <li><a href=""><code>923ea05</code></a> <code>Straighten up mkdir docs</code></li>
  545. <li><a href=""><code>aeeec94</code></a> <code>Straighten up copy, move, rename</code></li>
  546. <li><a href=""><code>fff866f</code></a> <code>Fix docs for symlink/link routines</code></li>
  547. <li><a href=""><code>f83f78c</code></a> <code>Use idiomatic Perl 6 in example</code></li>
  548. <li><a href=""><code>e60da5c</code></a> <code>List utf-* alias examples too since they're common</code></li>
  549. <li><a href=""><code>0f49bb5</code></a> <code>List Rakudo-supported encodings in open()</code></li>
  550. <li><a href=""><code>017acd4</code></a> <code>Improve docs for IO::Path.slurp</code></li>
  551. <li><a href=""><code>56b50fe</code></a> <code>Document IO::Handle.slurp</code></li>
  552. <li><a href=""><code>2aa3c9f</code></a> <code>Document new behaviour of IO::Handle.Supply</code></li>
  553. <li><a href=""><code>a30fae6</code></a> <code>Avoid potential confusion with use of word "object"</code></li>
  554. <li><a href=""><code>372545c</code></a> <code>Straighten up file test docs</code></li>
  555. <li><a href=""><code>1527d32</code></a> <code>Document :completely arg to IO::Path.resolve</code></li>
  556. <li><a href=""><code>4090446</code></a> <code>Improve chmod docs</code></li>
  557. <li><a href=""><code>d436f3c</code></a> <code>Document IO::Spec::* don't do any validation</code></li>
  558. <li><a href=""><code>69b2082</code></a> <code>Document IO::Path.chdir</code></li>
  559. <li><a href=""><code>b9de84f</code></a> <code>Remove DateTime tutorial from IO::Path docs</code></li>
  560. <li><a href=""><code>45e84ad</code></a> <code>Move IO::Path.path to attributes</code></li>
  561. <li><a href=""><code>0ca2295</code></a> <code>Reword/expand IO::Path intro prose</code></li>
  562. <li><a href=""><code>dbdc995</code></a> <code>Document IO::Spec::*.catpath</code></li>
  563. <li><a href=""><code>50e5565</code></a> <code>Document IO::Spec::*.catdir and .catfile</code></li>
  564. <li><a href=""><code>28b6283</code></a> <code>Document IO::Spec::*.canonpath</code></li>
  565. <li><a href=""><code>a1cb80b</code></a> <code>Document IO::Spec::Win32.basename</code></li>
  566. <li><a href=""><code>5c1d3b6</code></a> <code>Document IO::Spec::Unix.basename</code></li>
  567. <li><a href=""><code>9102b51</code></a> <code>Fix up IO::Path.basename</code></li>
  568. <li><a href=""><code>e9b6809</code></a> <code>Document IO::Path::* subclasses</code></li>
  569. <li><a href=""><code>a43ecb9</code></a> <code>Document IO::Path's $.SPEC and $.CWD</code></li>
  570. <li><a href=""><code>7afd9c4</code></a> <code>Remove unrelated related classes</code></li>
  571. <li><a href=""><code>6bd0f98</code></a> <code>Dissuade readers from using IO::Spec*</code></li>
  572. <li><a href=""><code>184342c</code></a> <code>Document IO::Special.what</code></li>
  573. <li><a href=""><code>56256d0</code></a> <code>Minor formatting improvements in IO::Special</code></li>
  574. <li><a href=""><code>1cd7de0</code></a> <code>Fix up type graph</code></li>
  575. <li><a href=""><code>b3a9324</code></a> <code>Expand/fix up IO::Path.accessed</code></li>
  576. <li><a href=""><code>1973010</code></a> <code>Document IO::Path.ACCEPTS</code></li>
  577. <li><a href=""><code>cc62dd2</code></a> <code>Kill IO::Path.abspath</code></li>
  578. <li><a href=""><code>1f75ddc</code></a> <code>Document IO::Spec*.abs2rel</code></li>
  579. <li><a href=""><code>24a6ea9</code></a> <code>Toss all of the TODO methods in IO::Spec*</code></li>
  580. <li><a href=""><code>65cc372</code></a> <code>Document IO::Path.concat-with</code></li>
  581. <li><a href=""><code>b9e692e</code></a> <code>Document new IO::Path.extension</code></li>
  582. <li><a href=""><code>d5abceb</code></a> <code>Write docs for all spurt routines</code></li>
  583. <li><a href=""><code>b8fba97</code></a> <code>Point out my $*CWD = chdir … is an error</code></li>
  584. <li><a href=""><code>b78d4fd</code></a> <code>Include type names in links to methods</code></li>
  585. <li><a href=""><code>bdd18f1</code></a> <code>Fix desc of IO::Path.Str</code></li>
  586. <li><a href=""><code>a53015a</code></a> <code>Clarify value of IO::Path.path</code></li>
  587. <li><a href=""><code>5aa614f</code></a> <code>Improve suggestion for Perl 5's opendir</code></li>
  588. <li><a href=""><code>bf377c7</code></a> <code>Document &amp;indir</code></li>
  589. <li><a href=""><code>e5225be</code></a> <code>Fix URL to &amp;*chdir</code></li>
  590. <li><a href=""><code>e1a299c</code></a> <code>Reword "defined as" for &amp;*chdir</code></li>
  591. <li><a href=""><code>3fdc6dc</code></a> <code>Document &amp;*chdir</code></li>
  592. <li><a href=""><code>1d0e433</code></a> <code>Document &amp;chdir</code></li>
  593. <li><a href=""><code>d050d4b</code></a> <code>Remove IO::Path.chdir prose</code></li>
  594. <li><a href=""><code>839a6b3</code></a> <code>Expand docs for $*HOME and $*TMPDIR</code></li>
  595. <li><a href=""><code>db36655</code></a> <code>Remove tip to use $*SPEC to detect OS</code></li>
  596. <li><a href=""><code>0511e07</code></a> <code>Document IO::Spec::*.tmpdir</code></li>
  597. <li><a href=""><code>cc6539b</code></a> <code>Remove 8 methods from IO::Handle</code></li>
  598. <li><a href=""><code>335a98d</code></a> <code>Remove mention of role IO</code></li>
  599. <li><a href=""><code>cc496eb</code></a> <code>Remove mention of IO.umask</code></li>
  600. <li><a href=""><code>3cf943d</code></a> <code>Expand IO::Path.relative</code></li>
  601. <li><a href=""><code>ccae74a</code></a> <code>Fix incorrect information for IO::Path.absolute</code></li>
  602. <li><a href=""><code>d02ae7d</code></a> <code>Remove and .rwx</code></li>
  603. <li><a href=""><code>69d32da</code></a> <code>Remove IO::Handle.z</code></li>
  604. <li><a href=""><code>110efb4</code></a> <code>No need for .ends-with</code></li>
  605. <li><a href=""><code>fd7a41b</code></a> <code>Improve code example</code></li>
  606. </ul>
  607. ]]>
  608.    </content>
  609. </entry>
  611. <entry>
  612.    <title>Perl 6 Performance and Reliability Engineering: Grant Report</title>
  613.    <link rel="alternate" type="text/html" href="" />
  614.    <id>,2017://18.3866</id>
  616.    <published>2017-04-22T00:00:00Z</published>
  617.    <updated>2017-04-22T04:50:36Z</updated>
  619.    <summary>This is a grant report by Jonathan Worthington on his grant under Perl 6 Core Development Fund. We thank the TPF sponsors to make this grant possible. I have completed the second 200 hours of my Perl 6 performance and reliability engineering grant, funded by the Perl 6 core development fund. This report summarizes the work done during those 200 hours. In accordance with community feedback, the vast majority of effort has been put into reliability rather than performance. Concurrency...</summary>
  620.    <author>
  621.        <name>Makoto Nozaki</name>
  622.        <uri></uri>
  623.    </author>
  625.        <category term="Grants" scheme="" />
  628.    <content type="html" xml:lang="en-us" xml:base="">
  629.        <![CDATA[<p><em>This is a grant report by Jonathan Worthington on his grant under Perl 6 Core Development Fund. We thank the TPF sponsors to make this grant possible.</em></p>
  631. <p>I have completed the second 200 hours of my <a href="">Perl 6 performance and reliability
  632. engineering</a>
  633. grant, funded by the <a href="">Perl 6 core development fund</a>.
  634. This report summarizes the work done during those 200 hours. In accordance with
  635. community feedback, the vast majority of effort has been put into reliability
  636. rather than performance.</p>
  638. <h2>Concurrency robustness</h2>
  640. <p>The main area of focus in this grant period has been making Perl 6's concurrency
  641. support more robust. While work remains to be done, the improvement over the
  642. last several months has been noticeable. It is also an important area for me to
  643. focus on, given the small number of people in the community with the skills,
  644. time, and patience (or, perhaps, stubbornness) to track down and resolve these
  645. problems. Here is a summary of the issues resolved.</p>
  646. ]]>
  647.        <![CDATA[<ul>
  648. <li>Fixed a bug affecting use of <code>callwith</code> in multiple threads</li>
  649. <li>Fixed RT #128809 (closure-related bug involving <code>s///</code> construct, which showed
  650. up in concurrent scenarios)</li>
  651. <li>Fixed RT #129213 (synchronous socket <code>accept</code> could block GC in other threads,
  652. thus blocking program progess)</li>
  653. <li>Determined RT #128694 fixed, added test (<code>zip-latest</code> on two intervals would hang)</li>
  654. <li>Eliminated use of in-place rope flattening, which violated the immutability
  655. of strings and could thus cause various crashes (especially in hash access);
  656. this resolved many failures, amongst them the one reported in RT #129781, and
  657. also made hash lookups using rope strings keys more efficient as a bonus</li>
  658. <li>Fixed warnings due to over-sharing of <code>$/</code> between threads when using grammars
  659. in parallel (mostly fixed RT #128833)</li>
  660. <li>Fixed a <code>Lock.protect</code> bug when we unwound the stack due to control exceptions
  661. (discovered independently of, but also resolved, RT #126774)</li>
  662. <li>Fixed RT #129949 (GC crash resulting from missing rooting of sent value in
  663. concurrent blocking queue)</li>
  664. <li>Fixed RT #129834 (sporadic behavior when concurrently creating <code>Proc::Async</code>
  665. objects and obtaining handles)</li>
  666. <li>Audited and fixed vulnerable cases of the <code>once</code> construct</li>
  667. <li>Fixed RT #129994 (long-lived native call on one thread could block GC in other
  668. threads)</li>
  669. <li>Fixed RT #125782 (uninformative error reporting when a <code>Promise</code> is broken)</li>
  670. <li>Examined RT #127960; concluded it is fixed, but added it as a stress test
  671. since it's a bit distinct from the other test for the same underlying bug</li>
  672. <li>Fixed a bug where method caches could be revealed to other threads before
  673. they were fully deserialized, causing falsely missed lookups</li>
  674. <li>Fixed a data race inside of the NativeCall setup code</li>
  675. <li>Fixed RT #130064 (trying to rethrow an exception that was never thrown before
  676. leaked an internal error; this showed up in Promise.break("foo"))</li>
  677. <li>Fixed scoping/cloning problem with <code>LAST</code>/<code>NEXT</code>/<code>QUIT</code> phasers in <code>supply</code>,
  678. <code>react</code>, <code>whenever</code>, and <code>for</code> constructs</li>
  679. <li>Fixed a bug with <code>QUIT</code> phasers mishandling exceptions thrown synchronously
  680. with the <code>.tap</code></li>
  681. <li>Switched to using <code>Supplier::Preserving</code> on the taps of stdout/stderr in
  682. <code>Proc::Async</code>, to avoid various innocent-looking usage patterns losing output</li>
  683. <li>Fixed RT #128991 (messages could seep out of a <code>supply</code> block even after it was
  684. considered done)</li>
  685. <li>Fixed a GC corruption bug involving <code>Proc::Async</code> that caused occasional crashes</li>
  686. <li>Tracked down and fixed two data races in the <code>supply</code>/<code>whenever</code> implementation
  687. and in <code>Supply.interval</code></li>
  688. <li>Fixed RT #130168 (<code>Supply.interval(...)</code> with very small interval would only
  689. ever emit 1 value)</li>
  690. <li>Fixed interaction of native callbacks, GC blocking, and embedding, which
  691. afflicted <code>Inline::Perl6</code></li>
  692. <li>Fixed use-after-free that could occur as part of inlining fixups when in a
  693. multi-threaded program</li>
  694. <li>Fixed precompilation of the <code>OO::Monitors</code> module</li>
  695. <li>Fixed RT #130266 (premature frees of handles in various async socket error
  696. handling cases)</li>
  697. <li>Fixed SEGVs when GC stressing was applied to S15-nfg/many-threads.t and
  698. S17-supply/syntax.t</li>
  699. <li>Fixed incorrect reporting of some errors on threads, which could show up as
  700. if they were compile-time errors</li>
  701. <li>Fixed thread safety issue in the <code>&gt;&gt;.foo</code> implementation</li>
  702. <li>Fixed a miscompilation of <code>||=</code>, <code>&amp;&amp;=</code>, and <code>//=</code>, making them a good bit more
  703. efficient along the way</li>
  704. <li>Add various bits of missing concurrency control in precompilation management,
  705. thus fixing parallel use of precompilation (this will help towards faster
  706. <code>p6doc</code> builds)</li>
  707. </ul>
  709. <h2>String decoding improvements in asynchronous I/O</h2>
  711. <p>Previously, decoding of bytes to strings for both <code>IO::Socket::Async</code> and
  712. <code>Proc::Async</code> was done at the VM level. This created a number of fragilities
  713. with regard to decoding errors. Due to time constraints, different encodings
  714. besides UTF-8 had not been implemented for these classes either, leaving users
  715. of them to do decoding manually if they needed anything else.</p>
  717. <p>To rectify these issues, I first made the VM-backed decoders directly available
  718. to userland. These will, in the future, be exposed as a Perl 6-level API, and
  719. we'll support user-space encodings. For now, it meant I could move the code that
  720. orchestrates the decoding of strings in async I/O into Perl 6 space, fixing the robustness issues. This
  721. also means that string decoding for different spawned processes and socket
  722. connections can be done in the thread pool, rather than using the
  723. event-processing thread. Along the way, I added support for different encodings.</p>
  725. <p>Finally, there were some issues around the way async sockets and processes
  726. worked with regard to NFG. I resolved these issues and made sure there was
  727. test coverage of the various edge cases.</p>
  729. <h2>Non-blocking await and react support</h2>
  731. <p>I did the initial round of work to provide support for non-blocking <code>await</code> and
  732. <code>react</code>. At present, these constructs will block a real OS thread, even if used
  733. on a thread in the thread pool. The changes, available via. <code>use v6.d.PREVIEW</code>,
  734. mean that thread-pool threads will be returned to the thread pool to do other
  735. work, and the code following the <code>await</code> and <code>react</code> will be scheduled once the
  736. result is available or processing is complete. This is implemented using
  737. continuations (much like <code>gather</code>/<code>take</code>, except in this case the continuation
  738. may be resumed on a different OS thread). The result is that Perl 6 programs
  739. will be able to have hundreds or thousands of outstanding <code>react</code>s and <code>await</code>s,
  740. with just a handful of real OS-threads required to process them.</p>
  742. <p>This is just the initial implementation; further work will be required to make
  743. this feature ready to be the default in Perl 6.d.</p>
  745. <h2>Memory leak fixes and memory use improvements</h2>
  747. <p>The highlight of the memory management improvements was a simplification to
  748. the lifetime management of register working sets in MoarVM. This resulted from
  749. the elimination of a couple of speculative features that were not yet being
  750. utilized by Rakudo, and in one case never would have been anyway. Coupled with
  751. a range of cleanups and some code streamlining, the result was a 10% reduction
  752. in peak memory use for CORE.setting compilation, and 20% off the compilation
  753. runtime. I also:</p>
  755. <ul>
  756. <li>Fixed a bug that caused bogus multi-dispatch cache misses for calls with many
  757. named arguments, leading to the cache growing indefinitely with duplicate
  758. entries</li>
  759. <li>Fixed a regex interpolation memory leak; it boiled down to unclaimed entries
  760. left behind in the serialization context weakhash</li>
  761. <li>Fixed leaks of asynchronous task handles</li>
  762. <li>Fixed a leak in decode stream cleanup</li>
  763. <li>Improved memory allocation measurement in I/O, meaning that full GC collection
  764. decisions are made more accurately in I/O-heavy programs</li>
  765. <li>Fixed a memory leak involving <code>Proc::Async</code></li>
  766. <li>Fixed a memory leak when a synchronous socket failed to connect</li>
  767. <li>Tracked down and resolved the last remaining leaks that showed up in
  768. <code>perl6-valgrind-m -e ''</code>, meaning it is now clean. (Previously, some cleanup
  769. was missed at VM shutdown)</li>
  770. </ul>
  772. <h2>Unicode-related work</h2>
  774. <p>I did a number of Unicode improvements, as well as discussing with and reviewing
  775. Pull Requests from a new contributor who is now doing a bunch of Unicode
  776. work for Perl 6. My own contributions code wise were:</p>
  778. <ul>
  779. <li>Initial support for Unicode 9 (updating the character database, basic NFG
  780. tweaks)</li>
  781. <li>A rewrite of the UTF8-C8 encoding to eliminate various bugs (some falling
  782. under RT #128184), including a buffer overrun and not properly round-tripping
  783. valid but non-NFC input</li>
  784. </ul>
  786. <h2>Other assorted bugs</h2>
  788. <p>I also took care of a range of other bugs, which don't fit into any of the
  789. previously mentioned areas of work.</p>
  791. <ul>
  792. <li>Fixed RT #128703 (1 R, 2 R, 3 lost values)</li>
  793. <li>Fixed RT #129088 (lack of backtaces for <code>sprintf</code> and friends)</li>
  794. <li>Fixed RT #129249 (mis-compilation of <code>/$&lt;cat&gt;=@(...)/</code>)</li>
  795. <li>Fixed RT #129306 (erorr reporting bug involving sub-signatures)</li>
  796. <li>Partially fixed and tested RT #129278 (native attributive parameter binding broken)
  797. and noted on the RT the less common cases that remain to be fixed</li>
  798. <li>Fixed RT #129430 (sigilless parameters were declared too late to use in where
  799. clauses)</li>
  800. <li>Fixed RT #129827 (sub { 42.return }() ended up being code-gen'd without a return
  801. handler)</li>
  802. <li>Fixed RT #129772 (poor error reporting when you tried to invoke a native
  803. parameter; it blew up code-gen and gave no location info)</li>
  804. <li>Tracked down and fixed a pre-comp management bug on Windows due to a file not being
  805. closed and then trying to rename over it</li>
  806. <li>Fixed RT #129968 (error-reporting crash in the case of redeclaration errors in
  807. nested packages)</li>
  808. <li>Fixed a bug with augmenting nested classes</li>
  809. <li>Fixed RT #129921 (internal warning when producing exception for <code>my $!a</code>)</li>
  810. <li>Hunted down a bug in the JIT-compilation of the <code>nqp::exception()</code> op and fixed it</li>
  811. <li>Fixed RT #130107 (accidentally treated <code>nread == 0</code> as an error in a couple of
  812. places in MoarVM)</li>
  813. <li>Fixed RT #130081 (did not backtrack into a regex <code>TOP</code> in a grammar to try and
  814. make it match until the end of the string)</li>
  815. <li>Fixed RT #130294 (SEGV that occasionally occurred during some cases of deep recursion)</li>
  816. <li>Fixed RT #128516 (SEGV when composing meta-object held in an attribute)</li>
  817. <li>Fixed RT #130465 (ignoremark not applied with backslashed literals)</li>
  818. <li>Fixed RT #130208 (putting multi-line Pod documentation on a role would pun it)</li>
  819. <li>Fixed RT #130615 (code-gen of <code>$a++</code> in sink context for native <code>$a</code> was a lot
  820. slower than in non-sink context)</li>
  821. <li>Fixed RT #130637 (two grammar constructs produced malformed NFAs, which gave
  822. wrong results or could even SEGV in MoarVM; MoarVM was made to validate NFAs
  823. more strongly, which shook out the second issue besides the reported one)</li>
  824. <li>Investigated RT #129291 (SEGV involving processes with output of one fed into
  825. input of the other); applied likely fix</li>
  826. <li>Investigated and fixed an issue with <code>$/</code> setting, arising from changes to
  827. the implementation of <code>match</code></li>
  828. <li>Fixed a bug that occasionally caused spectest crashes; was an interaction
  829. between dynamic lexical caching, inlining, deoptimization, and garbage
  830. collection</li>
  831. <li>Fixed a rare crash related to assignment when the type constraint was a
  832. refinement type</li>
  833. <li>Fixed MoarVM #120 and #426, in which a failed debug annotation lookup led to
  834. boxing a NULL string</li>
  835. <li>Fixed a couple of places where dynamic optimization could accidentally
  836. trigger garbage collection; the optimizer assumes this can never happen</li>
  837. <li>Fixed RT #123989 and RT #125135 (callsame et al could sometimes have the
  838. dispatcher stolen by the wrong target invokee)</li>
  839. </ul>
  841. <h2>Other tasks</h2>
  843. <p>On top of this, some time was spent reviewing pull requests to Rakudo, NQP,
  844. and MoarVM, providing feedback, and merging them when appropriate. I also
  845. commented on a range of RT tickets besides those I fixed myself. Various other
  846. small cleanups and additions resulted from this work, ranging from typo fixes
  847. in comments up to improvements to GC debugging macros added while finding bugs.</p>
  848. ]]>
  849.    </content>
  850. </entry>
  852. <entry>
  853.    <title>Final Grant Report : Migrating - April 2017</title>
  854.    <link rel="alternate" type="text/html" href="" />
  855.    <id>,2017://18.3865</id>
  857.    <published>2017-04-21T22:41:56Z</published>
  858.    <updated>2017-04-21T22:47:56Z</updated>
  860.    <summary>Work on the grant, started in November 2015, has stalled. With no progress reports from the grantee since November 2016, and after a number of attempts on all sides to jumpstart the work, the Grants Committee has voted to cancel the grant, as provided in the rules of operation. Many on the Committee and in the community would like to see a successful update of With that in mind, the Grants Committee encourages interested parties to consider applying...</summary>
  861.    <author>
  862.        <name>Mark A Jensen</name>
  864.    </author>
  866.        <category term="Grants" scheme="" />
  868.    <category term="grants" label="grants" scheme="" />
  870.    <content type="html" xml:lang="en-us" xml:base="">
  871.        <![CDATA[<p>Work on
  872. <a href="">the grant</a>,
  873. started in November 2015, has stalled. With no progress reports from the grantee since
  874. <a href="">November 2016</a>,
  875. and after a number of attempts on all sides to jumpstart the work,
  876. the Grants Committee has voted to cancel the grant, as provided in the
  877. <a href="">rules of operation</a>.</p>
  879. <p>Many on the Committee and in the community would like to see a
  880. successful update of With that in mind, the Grants
  881. Committee encourages interested parties to consider applying for
  882. improvement grants in upcoming rounds. The next round of decisions will happen in May.
  883. See <a href="">How to write a proposal</a>
  884. for tips, and feel free to reach out to the committee via
  885. tpf-grants-secretary at</p>
  887. <p>MAJ</p>
  888. ]]>
  890.    </content>
  891. </entry>
  893. <entry>
  894.    <title>Grant Extension Request: Maintaining the Perl 5</title>
  895.    <link rel="alternate" type="text/html" href="" />
  896.    <id>,2017://18.3864</id>
  898.    <published>2017-04-20T23:00:00Z</published>
  899.    <updated>2017-04-21T02:54:38Z</updated>
  901.    <summary>Tony Cook has requested an extension of $20,000 for his Maintaining the Perl 5 grant. This will allow him to dedicate another 400 hours to this work. During this grant he sent regular reports to the p5p mailing list as well as providing monthly summary reports that have been published on this site, the most recent of which are linked below: January 2017 December 2016 November 2016 October 2016 Before we make a decision on this extension, we would like...</summary>
  902.    <author>
  903.        <name>Makoto Nozaki</name>
  904.        <uri></uri>
  905.    </author>
  907.        <category term="Grants" scheme="" />
  910.    <content type="html" xml:lang="en-us" xml:base="">
  911.        <![CDATA[<p><strong>Tony Cook</strong> has requested an extension of $20,000 for his <strong>Maintaining the Perl 5</strong> grant. This will allow him to dedicate another 400 hours to this work. During this grant he sent regular reports to the p5p mailing list as well as providing monthly summary reports that have been published on this site, the most recent of which are linked below:</p>
  913. <ul>
  914. <li><a href="">January 2017</a></li>
  915. <li><a href="">December 2016</a></li>
  916. <li><a href="">November 2016</a></li>
  917. <li><a href="">October 2016</a></li>
  918. </ul>
  920. <p>Before we make a decision on this extension, we would like to have a period of community consultation. Please leave feedback in the comments field below or if you prefer, send email with your comments to makoto at We request that all the feedback should be sent by April 25th.</p>
  922. <p>If successful this extension will be funded from the <a href="">Perl 5 Core Maintenance Fund</a>.</p>
  924. <p>Note: The request was received in February and TPF's internal process took time to post this. Apologies.</p>
  925. ]]>
  927.    </content>
  928. </entry>
  930. <entry>
  931.    <title>Maintaining the Perl 5 Core: March 2017 report</title>
  932.    <link rel="alternate" type="text/html" href="" />
  933.    <id>,2017://18.3863</id>
  935.    <published>2017-04-06T23:00:00Z</published>
  936.    <updated>2017-04-06T03:39:54Z</updated>
  938.    <summary>This is a monthly report by Dave Mitchell on his grant under Perl 5 Core Maintenance Fund. We thank the TPF sponsors to make this grant possible. The main things I did last month were: * working on fuzzer-related tickets in the security queue; * working on tickets in the 5.26 blocker queue; * investigating the possibility of storing short strings directly in the head of an SV, eliminating the need for an SV body or malloced string buffer. The...</summary>
  939.    <author>
  940.        <name>Makoto Nozaki</name>
  941.        <uri></uri>
  942.    </author>
  944.        <category term="Grants" scheme="" />
  947.    <content type="html" xml:lang="en-us" xml:base="">
  948.        <![CDATA[<p>This is a monthly report by Dave Mitchell on his grant under <a href="">Perl 5 Core Maintenance Fund</a>. We thank the TPF sponsors to make this grant possible.</p>
  950. <pre>
  951. The main things I did last month were:
  953. * working on fuzzer-related tickets in the security queue;
  955. * working on tickets in the 5.26 blocker queue;
  957. * investigating the possibility of storing short strings directly in the
  958. head of an SV, eliminating the need for an SV body or malloced string
  959. buffer. The short conclusion was that it probably wont work robustly.
  961. * reducing the size of my p5p mailbox, which had grown to 14,000 emails
  962. over the years. It's now down to a few hundred. This was achieved firstly
  963. by simply deleting any threads more than 3 years old, then
  964. reading/processing/deleting any threads/tickets newer than that.
  966. SUMMARY:
  967.      0:30 "do ''" warnings
  968.      2:53 RT ##131083 Bleadperl breaks App-PDF-Link-0.18
  969.      0:15 RT #130841 AddressSanitizer: heap-buffer-overflow
  970.      2:38 RT #130841 heap-buffer-overflow in Perl_newSVpvn_flags
  971.      1:18 RT #130861 AddressSanitizer: heap-use-after-free in Perl_pp_rv2sv
  972.     11:52 RT #130915 AddressSanitizer: heap-buffer-overflow in Perl_do_vecget
  973.      2:39 RT #130916 heap-buffer-overflow in S_ckwarn_common
  974.      0:33 RT #130918 heap-buffer-overflow in Perl_pad_free
  975.      2:42 RT #130921 BBC re-engine-GNU-0.021
  976.      1:18 RT #130934 heap-use-after-free in Perl_yyparse
  977.      0:44 RT #130981 Confusing B::Deparse output with unless/elsif
  978.      0:44 RT #131033 t/op/range.t fails
  979.      1:53 RT #32714 Objects destroyed in the wrong order during global destruction
  980.      1:30 fix build warnings and smoke failures
  981.     17:31 investigate short-string PVs
  982.     31:12 process p5p mailbox
  983.      1:04 revert @INC changes
  984.      4:57 review blocker tickets
  985.      6:01 review security tickets
  986.    ------
  987.     92:14 TOTAL (HH::MM)
  989. 180.7 weeks
  990. 2549.0 total hours
  991.  14.1 average hours per week
  993. There are 251 hours left on the grant
  994. </pre>
  995. ]]>
  997.    </content>
  998. </entry>
  1000. <entry>
  1001.    <title>Grant Proposal: RPerl User Documentation Part 3</title>
  1002.    <link rel="alternate" type="text/html" href="" />
  1003.    <id>,2017://18.3862</id>
  1005.    <published>2017-04-04T01:19:40Z</published>
  1006.    <updated>2017-04-08T16:26:53Z</updated>
  1008.    <summary></summary>
  1009.    <author>
  1010.        <name>Coke</name>
  1012.    </author>
  1015.    <content type="html" xml:lang="en-us" xml:base="">
  1017.        <![CDATA[<p>The Grants Committee has received the following grant proposal for the March round. Before the Committee members vote, we would like to solicit feedback from the Perl community on the proposal.</p>
  1019. <p>Review the proposal below and please comment here by April 12th, 2017. The Committee members will start the voting process following that and the conclusion will be announced approximately in one week.</p>
  1021. <h1>RPerl User Documentation, Part 3</h1>
  1023. <ul>
  1024. <li><p>Name:</p>
  1026. <p>Will Braswell</p></li>
  1027. <li><p>Amount Requested:</p>
  1029. <p>USD 2,400</p></li>
  1030. </ul>
  1032. <h2>Synopsis</h2>
  1034. <p>RPerl v2.4 has been released, and now includes auto-parallelization along
  1035. with a raft of other new features, as expected.
  1036. Approximately 150 pages of new documentation have been published as part
  1037. of the RPerl User Docs grant part 2, comprising chapters 2, 3, and 4.
  1038. Yet, several more chapters remain to be written before the book is done.
  1039. This grant proposal is to continue work on the Learning RPerl textbook.</p>
  1041. <h2>Benefits to the Perl Community</h2>
  1043. <p>The number one request and obvious need at this time is still quality RPerl
  1044. user documentation, to help new RPerl users learn how to write fast software.
  1045. Learning RPerl is the canonical guide to RPerl and must be completed to enjoy
  1046. the maximum benefit to the Perl programming community.</p>
  1048. <h2>Deliverables</h2>
  1050. <p>Deliverables for this grant proposal are:</p>
  1052. <p>1.  Write Learning RPerl Chapter 5</p>
  1054. <p>2.  Write Learning RPerl Chapter 6</p>
  1056. <h2>Project Details</h2>
  1058. <p>I've already written all of the code for the solutions to exercises from
  1059. chapters 1 through 6 of Learning Perl:</p>
  1061. <p><a href="">Learning RPerl Github</a></p>
  1063. <p>I've already got a partial copy of Learning RPerl on the website:</p>
  1065. <p><a href="">Learning RPerl Website</a></p>
  1067. <h2>Inch-stones</h2>
  1069. <h3>Chapter 5 Data I/O</h3>
  1071. <p>1a.  STDIN</p>
  1073. <p>1b.  STDOUT &amp; STDERR</p>
  1075. <p>1c.  <code>printf</code> Operator</p>
  1077. <p>1d.  <code>die</code> &amp; <code>croak</code> Operators</p>
  1079. <p>1e.  Filehandles &amp; <code>filehandleref</code> Data Type</p>
  1081. <h3>Chapter 6 Hash Values &amp; Variables</h3>
  1083. <p>2a.  Hashes vs Arrays</p>
  1085. <p>2b.  1-D Hash Data Types</p>
  1087. <p>2c.  How To Access Hash Elements</p>
  1089. <p>2d.  <code>keys</code> Operator</p>
  1091. <p>2e.  2-D Array Data Types &amp; Nested Arrays</p>
  1093. <p>2f.  Converting From Array To String</p>
  1095. <p>2g.  Hashes &amp; The <code>foreach</code> Loop</p>
  1097. <h2>Project Schedule</h2>
  1099. <p>I will begin work immediately upon granting.</p>
  1101. <p>I expect work to take approximately 60 to 90 days.</p>
  1103. <h2>Completeness Criteria</h2>
  1105. <p>I will release a new version of RPerl to CPAN with the new documentation.</p>
  1107. <p>I will release a new version of the RPerl website with the new documentation.</p>
  1109. <h2>Bio</h2>
  1111. <p>I am the creator and lead developer of RPerl.</p>
  1113. <p>I've been working on RPerl for over 4 years.</p>
  1115. <p>I've successfully completed work on 2 TPF grants.</p>
  1117. <p>I would like to start work on the 3rd grant now.</p>
  1118. ]]>
  1119.    </content>
  1120. </entry>
  1122. <entry>
  1123.    <title>Grant Proposal: Improving the Robustness of Unicode Support in Rakudo on MoarVM</title>
  1124.    <link rel="alternate" type="text/html" href="" />
  1125.    <id>,2017://18.3860</id>
  1127.    <published>2017-04-04T01:00:30Z</published>
  1128.    <updated>2017-04-04T01:33:35Z</updated>
  1130.    <summary></summary>
  1131.    <author>
  1132.        <name>Coke</name>
  1134.    </author>
  1137.    <content type="html" xml:lang="en-us" xml:base="">
  1139.        <![CDATA[<p>The Grants Committee has received the following grant proposal for the March round.
  1140. Before the Committee members vote, we would like to solicit feedback from the Perl community on the proposal.</p>
  1142. <p>Review the proposal below and please comment here by April 12th, 2017.
  1143. The Committee members will start the voting process following that
  1144. and the conclusion will be announced approximately in one week.</p>
  1146. <h1>Improving the Robustness of Unicode Support in Rakudo on MoarVM</h1>
  1148. <ul>
  1149. <li><p>Name:</p>
  1151. <p>Samantha McVey (samcv)</p></li>
  1152. <li><p>Amount Requested:</p>
  1154. <p>7,500 USD</p></li>
  1155. </ul>
  1157. <h2>Synopsis</h2>
  1159. <p>Implement Unicode Collation Algorithm, improve speed and spec conformance of the
  1160. text normalizer. Improve test coverage for Unicode specs and document our
  1161. compliance or lack of compliance with the Unicode spec.</p>
  1163. <h2>Benefits to the Perl Community</h2>
  1165. <p>As Perl 6 starts to take off, it is increasingly important to provide robust
  1166. Unicode support. Perl 6 already provides some of the best Unicode support on
  1167. many levels compared to other programming languages. The goal of this project
  1168. is to make Perl 6's Unicode support production ready.</p>
  1170. <h2>Deliverables and Inch Stones</h2>
  1172. <ul>
  1173. <li>General
  1174. <ul>
  1175. <li>Any deficits of our Unicode coverage will be documented in the course of work on this
  1176. project. This is very important
  1177. due to the vastness of the Unicode standard. Deficits will have tests
  1178. written, unless such a thing would not be possible to test or input is needed
  1179. from the rest of the Perl 6 team. In any of these cases, they will be
  1180. documented in my reports for future and current developers of Perl 6 to reference.</li>
  1181. <li>Tests will be written to cover all of the relevant Unicode 9.0 test files, as
  1182. well as making current ones more robust when checking the breaking of graphemes.</li>
  1183. </ul></li>
  1184. <li>Unicode Names
  1185. <ul>
  1186. <li>Hangul Syllables and other Unicode names shall be programmatically determined
  1187. when generating the Unicode database.</li>
  1188. </ul></li>
  1189. <li>Unicode Collation Algorithm
  1190. <ul>
  1191. <li>Fully implement the Unicode Collation Algorithm at least for language
  1192. nonspecific sorting.</li>
  1193. <li>Assess needs in supporting language and country specific collation, and write
  1194. a report of these needs.</li>
  1195. </ul></li>
  1196. <li>Text Normalization
  1197. <ul>
  1198. <li>Improve the performance of the text normalizer and also allow the normalizer
  1199. to save state across multiple characters to properly support Grapheme Breaking
  1200. for all of Unicode 9.0 and beyond.</li>
  1201. </ul></li>
  1202. <li>Unicode Database Generation
  1203. <ul>
  1204. <li>The script used to generate the Unicode database shall be made deterministic,
  1205. and produce the same output file on every run.
  1206. At the current time about half of the file changes even if no changes are made to the
  1207. script. This is an issue that will be solved.</li>
  1208. <li>In addition to the above, the original script assumed that property values for
  1209. Unicode characters were unique. This causes issues when there is a conflict between
  1210. these. The rewritten script shall resolve this problem.</li>
  1211. <li>Rewrite the Perl 5 script used to generate the Unicode database in Perl 6.
  1212. This is also part of the previous item, since a rewrite is needed, it should be
  1213. done in Perl 6 to help make it more maintainable.</li>
  1214. <li>Implement all relevant remaining Unicode properties from Unicode 9.0. This
  1215. includes the properties needed to support the deliverables listed above.</li>
  1216. <li>Try to reduce the memory footprint of the Unicode database. Currently
  1217. the unicode.o binary file created is 4.1MB. I hope to cut that in half.</li>
  1218. </ul></li>
  1219. </ul>
  1221. <h2>Project Details</h2>
  1223. <p>I have already started working on the rewrite of the Unicode database generation
  1224. which is in <a href="">this public repository</a>.</p>
  1226. <p>Some background into this. The original Unicode database generation script we
  1227. currently use was added in 2012 and much of the script has not changed much since.
  1228. Although this current script is somewhat adequate, as I have been working on
  1229. Unicode support these past months it became clear that the script was not easily
  1230. maintainable and had some issues which would have required an extensive
  1231. rewrite of much of the script. It became clear that a full rewrite was prudent.</p>
  1233. <p>I have done lots of fielding and preliminary work as well as the knowledge I have
  1234. gained by working with the current script we use and the MoarVM internals. </p>
  1236. <h3>Plan</h3>
  1238. <h4>Month 1: Get database generation finalized</h4>
  1240. <ul>
  1241. <li>Implement testing for resolving codepoints to bitfield rows, to ensure
  1242. all codepoints resolve to the correct rows</li>
  1243. <li>Integrate testing of database values into the current Unicode database rewrite
  1244. (this will not be in roast, but will be done to ensure correctness during
  1245. development)</li>
  1246. <li>Work with timotimo on C implementation on indexed decoding of base40 compressed
  1247. Unicode Names (some work already done in <a href="">UCD repo</a></li>
  1248. <li>Implement programmatic generation of codepoint names for Hangul Syllables</li>
  1249. <li>Implement remaining properties and data in the rewrite and achieve pairity with
  1250. our current script</li>
  1251. </ul>
  1253. <h4>Month 2: Finish the Unicode Collation Algorithm and integrate with MoarVM, add test coverage to roast</h4>
  1255. <ul>
  1256. <li>Assess needs for language/country specific sorting for Unicode Collation Algorithm (UCA)</li>
  1257. <li>Implement weights of codepoint sequences (only single codepoint is implemented currently)</li>
  1258. <li>Implement decomposition of codepoints if no Collation weights are found</li>
  1259. <li>Integrate the rewrite with MoarVM codebase, as well as rewrite all sections
  1260. of MoarVM</li>
  1261. <li>Make needed changes in MoarVM so Property Values are not assumed unique.</li>
  1262. <li>Integrate with MoarVM codebase</li>
  1263. <li>Merge into MoarVM repository</li>
  1264. </ul>
  1266. <h2>Project Schedule</h2>
  1268. <p>I can begin work as soon as the grant is approved.</p>
  1270. <h2>Completeness Criteria</h2>
  1272. <p>Tests will be commited to roast, and the rewritten database and Unicode Collation
  1273. Algorithm implementation will be merged into MoarVM.</p>
  1275. <h2>Bio</h2>
  1277. <p>Although I am a fairly recent addition to the Perl 6 core developers, in a short
  1278. few months I have been very busy. I have two Perl 6 modules, IRC::TextColor
  1279. and URL::Find and I am the lead developer of the Perl 6 syntax highlighter
  1280. for Atom/Github as well as for I converted the site from
  1281. using the old Pygments highlighter to the new highlighter.</p>
  1283. <p>My contributions to Perl 6 have been focused on Unicode support in Perl 6,
  1284. making changes throughout Rakudo, NQP and MoarVM to achieve this. All of the
  1285. work I have already done on improving Unicode support in Perl 6 shows I am
  1286. capable of completing this project and am the best person for this grant.
  1287. In addition, I have already started work on rewriting the Unicode Database
  1288. generation and shrinking the size of the data needed to be loaded on startup.</p>
  1290. <h3>Incomplete list of Unicode work I have done in the last few months</h3>
  1292. <h4>Tests:</h4>
  1294. <ul>
  1295. <li>Fixed several errata in roast related to our Unicode support, which had often
  1296. been present for a long time.</li>
  1297. <li>Added a test based on GraphemeBreakTest.txt from Unicode and many others
  1298. to Unicode 9.0</li>
  1299. <li>Updated other tests for Unicode 9.0 and reworked others for compliance.</li>
  1300. </ul>
  1302. <h4>MoarVM:</h4>
  1304. <ul>
  1305. <li>Implemented a simplistic implementation of the Unicode Collation Algorithm.</li>
  1306. <li>Added <code>coll</code> operator, <code>.collate</code> method and the <code>$*COLLATION</code> variable
  1307. to Rakudo. For more information see the
  1308. <a href="">documentation</a> I have added on it.</li>
  1309. <li>Added support for named codepoint sequences, which includes the Named Sequences,
  1310. Emoji Sequences and Emoji ZWJ Sequences. <code>"\c[woman gesturing OK]"</code></li>
  1311. <li>Implemented
  1312. <a href="">Unicode Name Aliases</a> in
  1313. getting codepoints by name and <a href="">documentation</a></li>
  1314. <li>Implemented the 'Extend' Grapheme_Cluster_Break property which was new in Unicode 9.0.
  1315. We previously had no support for this property. This caused errors in grapheme
  1316. breakup and incorrect character count and segmentation.</li>
  1317. <li>Implemented many other Grapheme_Cluster_Break fixes and added support for
  1318. most Emoji sequences. This fixes most Emoji made up of multiple codepoints,
  1319. fixing character counts and text segmentation for these extended grapheme clusters.</li>
  1320. <li>Improved the speed of radix 50% for non-ASCII decimal digits
  1321. (converts strings to their numeric representation/values)</li>
  1322. <li>Improved the speed of text normalization, making slurping a Unicode heavy text
  1323. file 14% faster</li>
  1324. <li>Improved the speed m:i/ / regex matching between 1.8x and 3.3x (depending on not finding a match / finding a match at the beginning).</li>
  1325. <li>Added a multitude of properties to our Unicode database.</li>
  1326. </ul>
  1328. <h4>Rakudo:</h4>
  1330. <ul>
  1331. <li>Added support for a large number Unicode properties, handling Bool/Str/Int
  1332. return types for <code>uniprop</code></li>
  1333. <li>Implemented <code>uniprops</code> method in Rakudo</li>
  1334. </ul>
  1335. ]]>
  1336.    </content>
  1337. </entry>
  1339. <entry>
  1340.    <title>Perl 6 IO Grant: March 2017 Report</title>
  1341.    <link rel="alternate" type="text/html" href="" />
  1342.    <id>,2017://18.3859</id>
  1344.    <published>2017-04-04T00:51:03Z</published>
  1345.    <updated>2017-04-04T00:54:58Z</updated>
  1347.    <summary>Zoffix Znet provided this report on March 28, 2017 Perl 6 IO TPF Grant: Monthly Report (March, 2017) This document is the March, 2017 progress report for TPF Standardization, Test Coverage, and Documentation of Perl 6 I/O Routines grant Timing My delivery of the Action Plan was one week later than I originally expected to deliver it. The delay let me assess some of the big-picture consistency issues, which led to proposal to remove 15 methods from IO::Handle and to...</summary>
  1348.    <author>
  1349.        <name>Coke</name>
  1351.    </author>
  1353.        <category term="Grants" scheme="" />
  1356.    <content type="html" xml:lang="en-us" xml:base="">
  1357.        <![CDATA[<p><em>Zoffix Znet provided this report on March 28, 2017</em></p>
  1359. <h1>Perl 6 IO TPF Grant: Monthly Report (March, 2017)</h1>
  1361. <p>This document is the March, 2017 progress report for <a href="">TPF Standardization,
  1362. Test Coverage, and Documentation of Perl 6 I/O Routines
  1363. grant</a></p>
  1365. <h2>Timing</h2>
  1367. <p>My delivery of the Action Plan was one week later than I originally
  1368. expected to deliver it. The delay let me assess some of the big-picture
  1369. consistency issues, which led to proposal to remove 15 methods from IO::Handle
  1370. and to iron out naming and argument format for several other routines.</p>
  1372. <p>I still hope to complete all the code modifications prior to end of weekend of
  1373. April 15, so all of these can be included in the next Rakudo Star release. And
  1374. a week after, I plan to complete the grant.</p>
  1376. <p>Note: to minimize user impact, some of the changes may be included only in
  1377. 6.d language, which will be available in 2017.04 release only if the user uses
  1378. <code>use v6.d.PREVIEW</code> pragma.</p>
  1380. <h2>IO Action Plan</h2>
  1382. <p>I finished the IO Action Plan, <a href="">placed it into <code>/doc</code> of rakudo's repository</a>, and made it available to other core devs for
  1383. review for a week (period ends on April 1st). The Action Plan is 16 pages long and
  1384. contains 26 sections detailing proposed changes.</p>
  1386. <p>Overall, I proposed many more smaller changes than I originally expected and
  1387. fewer larger, breaking changes than I originally expected. This has to do
  1388. with a much better understanding of how rakudo's IO routines are "meant to" be
  1389. used, so I think the improvement of the documentation under this grant will
  1390. be much greater than I originally anticipated.</p>
  1392. <p>A lot of this has to do with lack of explanatory documentation for how to
  1393. manipulate and traverse paths. This had the effect that users were using the
  1394. <code>$*SPEC</code> object (157 instances of its use in the ecosystem!) and its routines
  1395. for that goal, which is rather awkward.
  1396. This concept is prevalent enough that I even wrote <a href=""><code>SPEC::Func</code></a> module in the
  1397. past, due to user demand, and certain books whose draft copies I read used
  1398. the <code>$*SPEC</code> as well.</p>
  1400. <p>In reality, <code>$*SPEC</code> is an internal-ish thing and unless you're writing your
  1401. own IO abstractions, you never need to use it directly. The changes and
  1402. additions to the <code>IO::Path</code> methods done under this grant will make traversing
  1403. paths even more pleasant, and the new tutorial documentation I plan to write
  1404. under this grant will fully describe the Right Way™ to do it all.</p>
  1406. <p>In fact, removal of <code>$*SPEC</code> in future language versions is currently under
  1407. consideration...</p>
  1409. <h2>Removal of <code>$*SPEC</code></h2>
  1411. <p>lizmat++ pointed out that we can gain significant performance improvements by
  1412. removing <code>$*SPEC</code> infrastructure and moving it into module-space. For example,
  1413. a benchmark of slurping a 10-line file shows that removal of all the
  1414. path processing code makes benched program run more than 14x faster. When
  1415. benching <code>IO::Path</code> creation, dynamic var lookup alone takes up 14.73% of
  1416. the execution time.</p>
  1418. <p>The initial plan was to try and make IO routines handle all OSes in a unified
  1419. way (e.g. using <code>/</code> on Windows), however it was found this would create
  1420. several ambiguities and would be buggy, even if fast.</p>
  1422. <p>However, I think there are still a lot of improvements that can be gained
  1423. by making <code>$*SPEC</code> infrastructure internal. So we'd still have the
  1424. <code>IO::Spec</code>-type modules but they'll have a private API we can optimize freely,
  1425. and we'll get rid of the dynamic lookups, consolidate what code we can into
  1426. <code>IO::Path</code>, while keeping the functionality that differs between OSes in the
  1427. <code>::Spec</code> modules.</p>
  1429. <p>Since this all sounds like guestimation and there's a significant-ish use of
  1430. <code>$*SPEC</code> in the ecosystem, the plan now is to implement it all in a module
  1431. first and see whether it works well and offers any significant performance
  1432. improvements. If it does, I believe it should be possible to swap <code>IO::Path</code>
  1433. to use the fast version in <code>6.d</code> language, while still leaving <code>$*SPEC</code> dynvar
  1434. and its modules in core, as deprecated, for removal in <code>6.e</code>.</p>
  1436. <p>This won't be done under this grant, and while trying not to over-promise, I
  1437. hope to release this module some time in May-June. So keep an eye out for it; I
  1438. already picked out a name: <a href=""><code>FastIO</code></a></p>
  1440. <h2>newio Branch</h2>
  1442. <p>As per original goals of the grant, I reviewed the code in Rakudo's 2014–2015
  1443. <code>newio</code> branch, to look for any salvagable ideas. I did not have any masterplan
  1444. design documents to go with it and I tried a few commits but did not find one
  1445. that didn't have merge conflicts and compiled (it kept complaining about
  1446. ModuleLoader), so my understanding of it comes solely from reading the source
  1447. code, and may be off from what the original author intended it to be.</p>
  1449. <p>The major difference between <code>newio</code> and Rakudo's current IO structure is
  1450. type hierarchy and removal of <code>$*SPEC</code>. <code>newio</code> provides <code>IO::Pathy</code> and
  1451. <code>PIO</code> roles which are done by <code>IO::File</code>, <code>IO::Dir</code>, <code>IO::Local</code>, <code>IO::Dup</code>,
  1452. <code>IO::Pipe</code>, and <code>IO::Huh</code> classes that represent various IO objects. The current
  1453. Rakudo's system has fewer abstractions: <code>IO::Path</code> represents a path to an IO
  1454. object and <code>IO::Handle</code> provides read/write access to it, with <code>IO::Pipe</code>
  1455. handling pipes, and no special objects for directories (their contents are
  1456. obtained via <code>IO::Path.dir</code> method and their attributes are modified via
  1457. <code>IO::Path</code> methods).</p>
  1459. <p>Since 6.d language is <em>additive</em> to 6.c language, completely revamping the
  1460. type hierarchy may be challenging and messy. I'm also not entirely sold on what
  1461. appears to be one of the core design ideas in <code>newio</code>: most of the
  1462. abstractions are of IO objects as <em>they were at the object instantiation time</em>. An <code>IO::Pathy</code> object represents an IO item <em>that exists</em>, despite there being
  1463. no guarantees that it actually does. Thus, <code>IO::File</code>'s <code>.f</code> and <code>.e</code> methods
  1464. always return <code>True</code>, while its <code>.d</code> method always returns <code>False</code>. This
  1465. undoubtedly gives a performance enhancement, however, if
  1466. <code>$ rm foo</code> were executed after <code>IO::File</code> object's creation, the <code>.e</code> method
  1467. would no longer return correct data and if then <code>$ mkdir foo</code> were
  1468. executed, both <code>.f</code> and <code>.d</code> methods would be returning incorrect data.</p>
  1470. <p>Until recently, Rakudo cached the result of <code>.e</code> call and <a href="">that produced
  1471. unexpected by user behaviour</a>. I think the
  1472. issue will be greatly exacerbated if this sort of caching is extended to entire
  1473. objects and many of their methods.</p>
  1475. <p>However, I do think the removal of <code>$*SPEC</code> is a good idea. And as described in
  1476. previous section I will try to make a <code>FastIO</code> module, using ideas from <code>newio</code>
  1477. branch, for possible inclusion in future language versions.</p>
  1479. <h2>Experimental MoarVM Coverage Reporter</h2>
  1481. <p>As was mentioned in my grant proposal, the coverage reporter was busted by
  1482. the upgrade of information returned by <code>.file</code> and <code>.line</code> methods on core
  1483. routines.
  1484. MasterDuke++ made several commits fixing numerous issues to the coverage
  1485. parser and last night I identified the final piece of the breakage. The
  1486. annotations and hit reports all use the new <code>SETTING::src/core/blah</code> file
  1487. format. The setting file has <code>SETTING::src/core/blah</code> markers inside of it.
  1488. The parser however, still thinks it's being fed the old <code>gen/moar/CORE.setting</code>
  1489. filenames, so once I teach it to calculate proper offsets
  1490. into the setting file, we'll have coverage reports on <a href=""></a> back up and running and I'll be able to use them
  1491. to judge IO routine test coverage required for this grant.</p>
  1493. <h2>Performance Improvements</h2>
  1495. <p>Although not planned by the original grant, I was able to make the following
  1496. performance enhancements to IO routines. So hey! Bonus deliverables \o/:</p>
  1498. <ul>
  1499. <li><a href="">rakudo/fa9aa47</a> Make <code>R::I::SET_LINE_ENDING_ON_HANDLE</code> <strong>4.1x</strong> Faster</li>
  1500. <li><a href="">rakudo/0111f10</a> Make IO::Spec::Unix.catdir <strong>3.9x</strong> Faster</li>
  1501. <li><a href="">rakudo/4fdebc9</a> Make IO::Spec::Unix.split <strong>36x</strong> Faster
  1502. <ul>
  1503. <li>Affects IO::Path's .parent, .parts, .volume, .dirname, and .basename</li>
  1504. <li>Measurement of first call to .basename shows it's now <strong>6x-10x</strong> faster</li>
  1505. </ul></li>
  1506. <li><a href="">rakudo/dcf1bb2</a> Make IO::Spec::Unix.rel2abs <strong>35%</strong> faster</li>
  1507. <li><a href="">rakudo/55abc6d</a> Improve IO::Path.child perf on <code>*nix</code>:
  1508. <ul>
  1509. <li>make IO::Path.child <strong>2.1x</strong> faster on <code>*nix</code></li>
  1510. <li>make IO::Spec::Unix.join <strong>8.5x</strong> faster</li>
  1511. <li>make IO::Spec::Unix.catpath <strong>9x</strong> faster</li>
  1512. </ul></li>
  1513. <li><a href="">rakudo/4032953</a> Make <strong>75%</strong> faster</li>
  1514. <li><a href="">rakudo/4eef6db</a> Make about <strong>4.4x</strong> faster</li>
  1515. <li><a href="">rakudo/ae5e510</a> Make <strong>7%</strong> faster when creating from Str</li>
  1516. <li><a href="">rakudo/0c6281</a> Make IO::Pipe.lines use IO::Handle.lines for <strong>3.2x</strong> faster performance</li>
  1517. </ul>
  1519. <h2>Performance Improvements Made By Other Core Developers</h2>
  1521. <p>lizmat++ also made these improvements in IO area:</p>
  1523. <ul>
  1524. <li><a href="">rakudo/b4d80c0</a> Make .IO.slurp about <strong>2x</strong> as fast</li>
  1525. <li><a href="">rakudo/9da50e3</a> Introducing IO::Handle.iterator</li>
  1526. <li><a href="">rakudo/9019a5b</a> Streamline IO::Handle.get/getc</li>
  1527. <li><a href="">rakudo/4bc826d</a> Streamline IO::Handle.get</li>
  1528. </ul>
  1530. <p>Along with the commits above, she also made IO::Handle.lines faster and
  1531. eliminated a quirk that required
  1532. custom <code>.lines</code> implementation in IO::Pipe (which is a subclass of IO::Handle).
  1533. Due to that, I was able to remove old IO::Pipe.lines implementation and make it
  1534. use new-and-improved IO::Handle.lines, which made the
  1535. method about 3.2x faster.</p>
  1537. <h2>Bugs</h2>
  1539. <h3>Will (attempt to) fix as part of the grant</h3>
  1541. <ul>
  1542. <li><code>IO::Pipe</code> inherits <code>.t</code> method from from <code>IO::Handle</code> to check if the handle
  1543. is a TTY, however, attempt to call it causes a segfault. MasterDuke++ already
  1544. found the candidate for the offending code
  1545. (<a href="">MoarVM/Issue#561</a>) and this
  1546. should be resolved by the time this grant is completed.</li>
  1547. </ul>
  1549. <h3>Don't think I will be able to fix these as part of the grant</h3>
  1551. <ul>
  1552. <li>Found a strange error generated when <code>IO::Pipe</code>'s buffer is filled up.
  1553. This is too deep in the guts for me to know how to resolve yet, so I filed it as
  1554. <a href="">RT#131026</a></li>
  1555. </ul>
  1557. <h3>Already Fixed</h3>
  1559. <ul>
  1560. <li>Made 7% faster when creating from paths strings and fixed
  1561. failure to detect <a href="">rakudo/ae5e51</a></li>
  1562. <li>Made about 4.4x faster <br />
  1563. <a href="">rakudo/4eef6d</a></li>
  1564. <li>Found that IO::Path had a vestigial .pipe method that delegated to a
  1565. non-existant IO::Handle method. Removed in <a href="">rakudo/a01d67</a></li>
  1566. <li>Fixed IO::Pipe.lines not accepting a Whatever as limit, which is accepted by
  1567. all other .lines. <a href="">rakudo/0c6281</a>
  1568. Tests in <a href="">roast/465795</a> and <a href="">roast/add852</a></li>
  1569. <li>Fixed issues due to caching of <code>IO::Handle.e</code>. Reported as
  1570. <a href="">RT#130889</a>. Fixed in
  1571. <a href="">rakudo/76f718</a>.
  1572. Tests in <a href="">roast/908348</a></li>
  1573. <li>Rejected <a href="">rakudo PR#666</a>
  1574. and resolved <a href="">RT#126262</a> by explaining why the methods return <code>Str</code> objects instead of <code>IO::Path</code> on
  1575. ticket/PR and improving the documentation by
  1576. fixing mistakes (<a href="">doc/ccae74</a>) and expanding (<a href="">doc/3cf943</a>) on what the methods do exactly.</li>
  1577. <li>IO::Path.Bridge was defunct, as it was trying to call .Bridge on Str, which
  1578. does not exist. Resolved the issue by deleting this method in <a href="">rakudo/212cc8</a></li>
  1579. <li>Per demand, made <code>IO::Path.dir</code> a multi, so module-space can augment it with
  1580. other candidates that add more functionality. <a href="">rakudo/fbe7ace</a></li>
  1581. </ul>
  1582. ]]>
  1584.    </content>
  1585. </entry>
  1587. <entry>
  1588.    <title>Call for Grant Proposals (March 2017 Round)</title>
  1589.    <link rel="alternate" type="text/html" href="" />
  1590.    <id>,2017://18.3858</id>
  1592.    <published>2017-03-24T01:10:02Z</published>
  1593.    <updated>2017-04-25T16:58:17Z</updated>
  1595.    <summary></summary>
  1596.    <author>
  1597.        <name>Coke</name>
  1599.    </author>
  1602.    <content type="html" xml:lang="en-us" xml:base="">
  1604.        <![CDATA[<p>The Grants Committee is accepting grant proposals all the time.
  1605. We evaluate them every two months and another evaluation period has come. This month's round is a little later than usual, due to the selection of
  1606. a new GC Secretary (myself). This round will be slightly compressed, and we'll strive to get back on track for the next round.</p>
  1608. <p>If you have an idea for doing some Perl work that will benefit the Perl
  1609. community, consider sending a grant application. <strong>The application deadline
  1610. for this round is 23:59 April 2nd UTC.</strong> We will publish the received applications, get community
  1611. feedback and conclude acceptance by April 12th.</p>
  1613. <p>To apply, please read <a href="">How
  1614. to Write a Proposal</a>. <a href="">Rules of
  1615. Operation</a> and <a href="">Running Grants List</a> will also help you understand how the grant process works. We also got some <a href="">grant ideas</a> from the community. The format is the same as the previous rounds in 2014-2016.</p>
  1617. <p>We will confirm the receipt of application within 24 hours.</p>
  1619. <p>If you have further questions, please contact me at tpf-grants-secretary at</p>
  1620. ]]>
  1621.    </content>
  1622. </entry>
  1624. <entry>
  1625.    <title>New Grant Committee Member &amp; Secretary</title>
  1626.    <link rel="alternate" type="text/html" href="" />
  1627.    <id>,2017://18.3857</id>
  1629.    <published>2017-03-24T00:51:07Z</published>
  1630.    <updated>2017-04-25T16:58:25Z</updated>
  1632.    <summary>Please join me in welcoming John SJ Anderson (genehack) as the newest voting member of The Perl Foundation&apos;s Grants Committee. John has helped organize several recent YAPCs, given talks and training at YAPCs, and maintains several modules on CPAN. Additionally, as Makoto Nozaki is transitioning to the secretary of the TPF Board, he is vacating the position of GC Secretary, and I have been selected to to fill the role. My apologies for the delays in the transition. Look for...</summary>
  1633.    <author>
  1634.        <name>Coke</name>
  1636.    </author>
  1638.        <category term="Grants" scheme="" />
  1641.    <content type="html" xml:lang="en-us" xml:base="">
  1642.        <![CDATA[<p>Please join me in welcoming John SJ Anderson (genehack) as the newest voting member
  1643. of The Perl Foundation's Grants Committee. John has helped organize several recent YAPCs,
  1644. given talks and training at YAPCs, and maintains several modules on CPAN.</p>
  1646. <p>Additionally, as Makoto Nozaki is transitioning to the secretary of the TPF Board,
  1647. he is vacating the position of GC Secretary, and I have been selected to
  1648. to fill the role.</p>
  1650. <p>My apologies for the delays in the transition. Look for a posting shortly about
  1651. the March call for proposals.</p>
  1652. ]]>
  1654.    </content>
  1655. </entry>
  1657. </feed>

If you would like to create a banner that links to this page (i.e. this validation result), do the following:

  1. Download the "valid Atom 1.0" banner.

  2. Upload the image to your own server. (This step is important. Please do not link directly to the image on this server.)

  3. Add this HTML to your page (change the image src attribute if necessary):

If you would like to create a text link instead, here is the URL you can use:

Copyright © 2002-9 Sam Ruby, Mark Pilgrim, Joseph Walton, and Phil Ringnalda