<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:dw="https://www.dreamwidth.org">
  <id>tag:dreamwidth.org,2017-04-20:3147171</id>
  <title>lmemsm</title>
  <subtitle>lmemsm</subtitle>
  <author>
    <name>lmemsm</name>
  </author>
  <link rel="alternate" type="text/html" href="https://lmemsm.dreamwidth.org/"/>
  <link rel="self" type="text/xml" href="https://lmemsm.dreamwidth.org/data/atom"/>
  <updated>2025-10-18T15:14:28Z</updated>
  <dw:journal username="lmemsm" type="personal"/>
  <entry>
    <id>tag:dreamwidth.org,2017-04-20:3147171:31797</id>
    <link rel="alternate" type="text/html" href="https://lmemsm.dreamwidth.org/31797.html"/>
    <link rel="self" type="text/xml" href="https://lmemsm.dreamwidth.org/data/atom/?itemid=31797"/>
    <title>Diff Utilities</title>
    <published>2025-10-18T15:14:28Z</published>
    <updated>2025-10-18T15:14:28Z</updated>
    <category term="busybox"/>
    <category term="diffutils"/>
    <category term="sbase"/>
    <category term="toybox"/>
    <category term="myers' algorithm"/>
    <category term="gnu"/>
    <category term="lcs"/>
    <category term="diff"/>
    <dw:security>public</dw:security>
    <dw:reply-count>0</dw:reply-count>
    <summary type="html">I've been looking at different diff tools trying to figure out how I would design my own cross-platform portable diff program with the features I use most.  The most interesting thing I found out was how different the various outputs of the diff programs all are.  There's also no one algorithm that creates the most intuitive output for a human to read.  A certain algorithm may be better for one case but not for another.  I'll share a summary of what I've researched about diff utilities so far.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;(&lt;a href="https://lmemsm.dreamwidth.org/31797.html"&gt;Read more ...&lt;/a&gt;)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="https://www.dreamwidth.org/tools/commentcount?user=lmemsm&amp;ditemid=31797" width="30" height="12" alt="comment count unavailable" style="vertical-align: middle;"/&gt; comments</summary>
  </entry>
  <entry>
    <id>tag:dreamwidth.org,2017-04-20:3147171:12132</id>
    <link rel="alternate" type="text/html" href="https://lmemsm.dreamwidth.org/12132.html"/>
    <link rel="self" type="text/xml" href="https://lmemsm.dreamwidth.org/data/atom/?itemid=12132"/>
    <title>Preprocessor and Makefile Tips and Tricks</title>
    <published>2020-02-06T17:09:01Z</published>
    <updated>2021-07-13T18:32:46Z</updated>
    <category term="makefile"/>
    <category term="sed"/>
    <category term="gcc"/>
    <category term="preprocessor"/>
    <category term="gnu"/>
    <category term="tips"/>
    <category term="tricks"/>
    <category term="make"/>
    <category term="c"/>
    <dw:security>public</dw:security>
    <dw:reply-count>0</dw:reply-count>
    <summary type="html">Here are some interesting articles and tips related to the C preprocessor and to creating makefiles.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;(&lt;a href="https://lmemsm.dreamwidth.org/12132.html"&gt;Read more ...&lt;/a&gt;)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="https://www.dreamwidth.org/tools/commentcount?user=lmemsm&amp;ditemid=12132" width="30" height="12" alt="comment count unavailable" style="vertical-align: middle;"/&gt; comments</summary>
  </entry>
  <entry>
    <id>tag:dreamwidth.org,2017-04-20:3147171:6217</id>
    <link rel="alternate" type="text/html" href="https://lmemsm.dreamwidth.org/6217.html"/>
    <link rel="self" type="text/xml" href="https://lmemsm.dreamwidth.org/data/atom/?itemid=6217"/>
    <title>MinGW</title>
    <published>2017-04-20T19:43:20Z</published>
    <updated>2017-04-20T19:43:20Z</updated>
    <category term="mingw"/>
    <category term="win32 api"/>
    <category term="c"/>
    <category term="posix threads"/>
    <category term="gcc"/>
    <category term="c11 threads"/>
    <category term="gnu"/>
    <category term="c/c++"/>
    <category term="pthreads"/>
    <category term="c++"/>
    <category term="win32"/>
    <dw:security>public</dw:security>
    <dw:reply-count>0</dw:reply-count>
    <summary type="html">There are now several forks of MinGW and each has its pros and cons.  However, there are now enough negatives to using them, that I've found it necessary to build MinGW from scratch myself.  The MinGW64 project uses a later version of gcc, has better compatibility for building Open Source projects and has its own thread library instead of using Red Hat's pthreads-w32.  Some custom builds of MinGW64 even have POSIX threading set as the default instead of Win32 threading.  That means better compatibility for C++ thread related code (since the GNU C++ library relies on POSIX threading for parts of its implementation).  The MinGW project has always been more careful about licensing and making sure that the code it was using was properly licensed and legal for usage.  The MinGW project did follow the example of the MinGW64 project in one key area.  They switched from public domain to a MIT license for their runtime library and Win32 API.  When they did so without clearly indicating that an exception could be made similar to the GNU gcc runtime license exception, I felt it was time to stop using that version of the MinGW compiler.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;(&lt;a href="https://lmemsm.dreamwidth.org/6217.html"&gt;Read more ...&lt;/a&gt;)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="https://www.dreamwidth.org/tools/commentcount?user=lmemsm&amp;ditemid=6217" width="30" height="12" alt="comment count unavailable" style="vertical-align: middle;"/&gt; comments</summary>
  </entry>
  <entry>
    <id>tag:dreamwidth.org,2017-04-20:3147171:3217</id>
    <link rel="alternate" type="text/html" href="https://lmemsm.dreamwidth.org/3217.html"/>
    <link rel="self" type="text/xml" href="https://lmemsm.dreamwidth.org/data/atom/?itemid=3217"/>
    <title>my core utilities</title>
    <published>2017-04-20T18:04:13Z</published>
    <updated>2017-04-20T18:04:13Z</updated>
    <category term="gnu"/>
    <category term="public domain"/>
    <category term="bsd"/>
    <category term="utilities"/>
    <category term="core utilities"/>
    <category term="fsf"/>
    <category term="coreutils"/>
    <category term="mit"/>
    <category term="portable"/>
    <category term="tools"/>
    <dw:security>public</dw:security>
    <dw:reply-count>0</dw:reply-count>
    <summary type="html">I've listed some core utilities options besides GNU.  I thought I'd share something about what utilities I personally prefer to use.  My main requirement in a good set of core utilities is portability.  This is rather hard to find.  You would think that if a utility was efficient and lightweight, it would be easy to port.  However, that's not necessarily so.  Many utilities that are designed for efficiency take advantage of features of a particular operating system which makes them harder to port.  &lt;br /&gt;&lt;br /&gt;&lt;b&gt;(&lt;a href="https://lmemsm.dreamwidth.org/3217.html"&gt;Read more ...&lt;/a&gt;)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="https://www.dreamwidth.org/tools/commentcount?user=lmemsm&amp;ditemid=3217" width="30" height="12" alt="comment count unavailable" style="vertical-align: middle;"/&gt; comments</summary>
  </entry>
  <entry>
    <id>tag:dreamwidth.org,2017-04-20:3147171:3000</id>
    <link rel="alternate" type="text/html" href="https://lmemsm.dreamwidth.org/3000.html"/>
    <link rel="self" type="text/xml" href="https://lmemsm.dreamwidth.org/data/atom/?itemid=3000"/>
    <title>core utilities</title>
    <published>2017-04-20T18:02:38Z</published>
    <updated>2023-08-15T15:55:43Z</updated>
    <category term="utilities"/>
    <category term="posix"/>
    <category term="core utilities"/>
    <category term="gnu"/>
    <category term="bsd"/>
    <category term="tools"/>
    <category term="coreutils"/>
    <category term="unix"/>
    <dw:security>public</dw:security>
    <dw:reply-count>0</dw:reply-count>
    <summary type="html">Most systems (other than BSD based ones) use GNU's core utilities.  It's used by most Linux distributions.  Cygwin, MinGW and gnuwin32 run ported versions of the GNU applications as well.  Even Microsoft's SFU/SUA included some of the GNU utilities.  However, the GNU core utilities are typically more bloated and have more feature creep than other versions of standard Unix utility programs.  BSD systems have their versions of core utilities.  The latest version of Minix has adopted the BSD utilities.  They tend to be less bloated than the GNU versions, but are still more bloated than other options out there.  The BSD utilities also tend toward adding new features similar to but not to the same extent as the GNU utilities.  Also, some of their utilities aren't as well optimized as the GNU versions.  Busybox seems like the most viable option for a lightweight but still comprehensive version of core utilities.  I'm currently using it on my Debian system instead of the GNU core utilities.  Toybox is a similar alternative to Busybox.  It has a better license option than Busybox, but it's lacking some features and tools that Busybox has.  &lt;br /&gt;&lt;br /&gt;&lt;b&gt;(&lt;a href="https://lmemsm.dreamwidth.org/3000.html"&gt;Read more ...&lt;/a&gt;)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="https://www.dreamwidth.org/tools/commentcount?user=lmemsm&amp;ditemid=3000" width="30" height="12" alt="comment count unavailable" style="vertical-align: middle;"/&gt; comments</summary>
  </entry>
</feed>
