<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">

  <title><![CDATA[Category: Lisp | fe[nl]ix's blog]]></title>
  <link href="http://blog.cddr.org/categories/lisp/atom.xml" rel="self"/>
  <link href="http://blog.cddr.org/"/>
  <updated>2013-04-17T17:06:33+02:00</updated>
  <id>http://blog.cddr.org/</id>
  <author>
    <name><![CDATA[Stelian Ionescu]]></name>
    <email><![CDATA[sionescu@cddr.org]]></email>
  </author>
  <generator uri="http://octopress.org/">Octopress</generator>

  
    <entry>
      




<title type="html"><![CDATA[A legal analysis of the LLGPL]]></title>
<link href="http://blog.cddr.org/2013/04/17/a-legal-analysis-of-the-llgpl/"/>
<updated>2013-04-17T16:54:00+02:00</updated>
<id>http://blog.cddr.org/2013/04/17/a-legal-analysis-of-the-llgpl</id>

      <content type="html"><![CDATA[<p>Eli Greenbaum's analysis <a href="http://www.ifosslr.org/ifosslr/article/view/75/146">here</a> is the first legal commentary on the LLGPL I've encountered.</p>

<p><a rel="bookmark" href="http://blog.cddr.org/2013/04/17/a-legal-analysis-of-the-llgpl/">&#9875; Permalink</a></p>

]]></content>
    </entry>
  
    <entry>
      




<title type="html"><![CDATA[The why of version.lisp-expr]]></title>
<link href="http://blog.cddr.org/2012/06/05/the-why-of-version-dot-lisp-expr/"/>
<updated>2012-06-05T11:47:00+02:00</updated>
<id>http://blog.cddr.org/2012/06/05/the-why-of-version-dot-lisp-expr</id>

      <content type="html"><![CDATA[<p>In all projects I manage, instead of including the version string verbatim in .asd files, I relegate it to an external file named <em>version.lisp-expr</em> which I then include in all .asd files, typically at least two:</p>

<p><!--escape--><div class='escape-wrapper'><notextile><!--content--><figure class='code'><div class='highlight'><table><td class='gutter'><pre class='line-numbers'><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
<span class='line-number'>6</span>
<span class='line-number'>7</span>
<span class='line-number'>8</span>
<span class='line-number'>9</span>
<span class='line-number'>10</span>
<span class='line-number'>11</span>
<span class='line-number'>12</span>
<span class='line-number'>13</span>
<span class='line-number'>14</span>
<span class='line-number'>15</span>
<span class='line-number'>16</span>
</pre></td><td class='code'><pre><code class='cl'><span class='line'><span class="c1">;; foo.asd&lt;/p&gt;</span>
</span><span class='line'>
</span><span class='line'><span class="nv">&lt;p&gt;</span><span class="p">(</span><span class="nv">asdf:defsystem</span> <span class="ss">:foo</span>
</span><span class='line'>  <span class="ss">:version</span> <span class="o">#.</span><span class="p">(</span><span class="nb">with-open-file</span> <span class="p">(</span><span class="nv">f</span> <span class="p">(</span><span class="nb">merge-pathnames</span> <span class="s">&quot;version.lisp-expr&quot;</span><span class="nv">&lt;/p&gt;</span>
</span><span class='line'>
</span><span class='line'><span class="nv">&lt;pre&gt;&lt;code&gt;</span>                                             <span class="p">(</span><span class="nb">or</span> <span class="vg">*compile-file-pathname*</span>
</span><span class='line'>                                                 <span class="vg">*load-truename*</span><span class="p">)))</span>
</span><span class='line'>           <span class="p">(</span><span class="nb">read</span> <span class="nv">f</span><span class="p">))</span>
</span><span class='line'><span class="nv">&lt;/code&gt;&lt;/pre&gt;</span>
</span><span class='line'>
</span><span class='line'><span class="nv">&lt;p&gt;...</span><span class="p">)</span><span class="nv">&lt;/p&gt;</span>
</span><span class='line'>
</span><span class='line'><span class="nv">&lt;p&gt;</span><span class="c1">;; and version.lisp-expr&lt;/p&gt;</span>
</span><span class='line'>
</span><span class='line'><span class="nv">&lt;p&gt;</span><span class="c1">;; -&lt;em&gt;- lisp -&lt;/em&gt;-</span>
</span><span class='line'><span class="s">&quot;0.0.1&quot;</span>
</span></code></pre></td></tr></table></div></figure><!--end-content--></notextile></div><!--end-escape--></p>

<p>Q: Why this approach ?<br/>
A:  Because it's script-friendly: I have a generic release script that overwrites version.lisp-expr before committing and tagging, and it's much safer to do it this way rather than using sed to replace the version string in .asd files. Also because this way the version info says in one place, instead of duplicating it in multiple files.</p>

<p>Q: Why use cl:read ?<br/>
A: Because it allows me to add comments to the file. Since I use #. to include the version, the format must be a CL string.</p>

<p>Q: Why .lisp-expr instead of .lisp ?<br/>
A: To make it obvious that the file isn't meant to be compiled, but that the syntax is CL. It's technically unnecessary.</p>

<p>Q: Where did I get this idea from ?<br/>
A: SBCL. Its build system includes version.lisp-expr only in release tarballs and computes the version using git-describe in source checkouts, but for most needs that's unnecessarily complex.</p>

<p><a rel="bookmark" href="http://blog.cddr.org/2012/06/05/the-why-of-version-dot-lisp-expr/">&#9875; Permalink</a></p>

]]></content>
    </entry>
  
    <entry>
      




<title type="html"><![CDATA[Today's round of releases]]></title>
<link href="http://blog.cddr.org/2012/06/01/todays-round-of-releases/"/>
<updated>2012-06-01T22:52:00+02:00</updated>
<id>http://blog.cddr.org/2012/06/01/todays-round-of-releases</id>

      <content type="html"><![CDATA[<p>I just released <a href="https://github.com/sharplispers/split-sequence">Split-sequence</a> <a href="https://github.com/downloads/sharplispers/split-sequence/split-sequence-1.1.tar.gz">1.1</a>, <a href="https://github.com/sharplispers/parse-number/">Parse-number</a> <a href="https://github.com/downloads/sharplispers/parse-number/parse-number-1.3.tar.gz">1.3</a>, <a href="http://common-lisp.net/project/fiveam/">FiveAM</a> <a href="https://github.com/downloads/sionescu/fiveam/fiveam-1.0.tar.gz">1.0</a>, <a href="https://github.com/sionescu/static-vectors/">Static-Vectors</a> <a href="https://github.com/downloads/sionescu/static-vectors/static-vectors-1.4.tar.gz">1.4</a> and <a href="http://common-lisp.net/project/bordeaux-threads/">Bordeaux-Threads</a> <a href="https://github.com/downloads/sionescu/bordeaux-threads/bordeaux-threads-0.8.2.tar.gz">0.8.2</a></p>

<p>If you can't wait until the next Quicklisp update, download them and let me know if you encounter any issues</p>

<p><a rel="bookmark" href="http://blog.cddr.org/2012/06/01/todays-round-of-releases/">&#9875; Permalink</a></p>

]]></content>
    </entry>
  
    <entry>
      




<title type="html"><![CDATA[The future of FiveAM]]></title>
<link href="http://blog.cddr.org/2012/04/21/the-future-of-fiveam/"/>
<updated>2012-04-21T23:16:00+02:00</updated>
<id>http://blog.cddr.org/2012/04/21/the-future-of-fiveam</id>

      <content type="html"><![CDATA[<p>FiveAM is my favorite and one of the best testing frameworks for Common Lisp; it has gone undeveloped for the past 3 years but now its author, Marco Baringer, has kindly <a href="http://article.gmane.org/gmane.lisp.web.uncommonweb.devel/2576">accepted</a> to let me take over the project and continue its development.</p>

<p>I created a new <a href="http://common-lisp.net/project/fiveam/">project</a> for it on common-lisp.net with its own mailing list, converted the sources to git and put them on <a href="https://github.com/sionescu/fiveam">github</a>.</p>

<p>I'll slowly integrate the various forks and patches I found around so if you have feature requests or you're just interested join <a href="http://lists.common-lisp.net/mailman/listinfo/fiveam-devel">fiveam-devel</a>.</p>

<p><a rel="bookmark" href="http://blog.cddr.org/2012/04/21/the-future-of-fiveam/">&#9875; Permalink</a></p>

]]></content>
    </entry>
  
</feed>

