updata
[sdlgit/SDL-Site.git] / pages / blog-0021.html-inc
index da0846f..65ae515 100644 (file)
@@ -1,6 +1,6 @@
 <div class="blog">
 <h1 id="NAME">
-Catching memory leaks in XS
+Updates on Plan for v2.4
 </h1>
 <div class="CONTENT">
-<div style="text-align: right;"><i>&nbsp;I slay dragons, yonder</i></div><br />So I am trying to find and plug memory leaks in SDL perl. Most of the <a href="https://rt.cpan.org/Ticket/Display.html?id=49084">memory leaks</a> occur because in XS a reference is still held. One very expensive mem leak was caught by TELS really early on <a href="https://rt.cpan.org/Ticket/Display.html?id=17976">here</a>. The problem occurs where in XS there is<br /><br /><blockquote><i>RETVAL</i><i> = (cast *) safemalloc( ... );</i></blockquote>&nbsp;and safefree(...) is never called.<br />Here is a in <a href="http://github.com/kthakore/SDL_perl/blob/63ebaa682697728f5946f700a2b2c12534b1b821/src/SDL.xs">code example</a> lines 1082 on. <br /><br />My question is how I can mitigate these memory leaks? One idea I had was to store all malloc'd pointers to an array that is safefree'd on DESTROY or hooked into perl GC somehow .<br /><br /><br />Any guidance is helpful.<br /><br /><i>--yapgh</i><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3102167581424744259-7742659740534179607?l=yapgh.blogspot.com'/></div></div></div>
\ No newline at end of file
+<div style="text-align: right;"><i>A fierce storm came,<br />With a crash,<br />Old oaks went lame.</i></div><p>After some hunting for memory leaks, it became obvious that some   rewrite of XS will be necessary. Since this will be a big undertaking   I asked for some help from <a href="http://modernperlbooks.com/mt/index.html">chromatic</a> and <a href="http://onionstand.blogspot.com/">garu</a>. We came up with the   following plan for v2.4.</p><br /><p>Currently all XS is mapped to the SDL_perl module. This does not reflect the modular nature of the sdl libs. So the plan is to gradually move SDL structs and their respective functions to their correct namespaces. We will start with SDL::Rect as garu has <a href="http://github.com/garu/SDL_perl/commit/68210590cb457b273ba0f1f891d378b876dc6cd7">added many tests</a>   for it. This way the build system will be a lot easier to hack since Module::Build was made for one XS per module. Moreover we will move the Build utilities to Alien::SDL, making it even simpler. The main idea is to adhere to single responsibility principle and encapsulation. </p><br /><p>Obviously this will take some time and effort, but it will pay off in the long run. Any help will be greatly appreciated. <br /></p><i>--yapgh</i><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3102167581424744259-5293501082670630307?l=yapgh.blogspot.com' alt='' /></div></div></div>
\ No newline at end of file