20211012-execline.html (3851B)
1 <!DOCTYPE HTML> 2 <html lan=en> 3 <head> 4 <title>My thoughts on execline | Cem's Website</title> 5 <meta charset="utf-8"> 6 <meta name="Description" content="Cem Keylan's Website"> 7 <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> 8 <style> 9 html {font-family:monospace;font-size:16px;color:#282a36;} 10 body { 11 width: 90%; 12 max-width: 1050px; 13 margin-left: auto; 14 margin-right: auto; 15 margin-top: 20px; 16 overflow: none; 17 overflow-y: scroll; 18 padding-right: 10px; 19 padding-left: 10px; 20 } 21 a{text-decoration:none;font-weight:bold;color:#282a36;} 22 a:hover{text-decoration:underline;} 23 @media (prefers-color-scheme: dark) { 24 html {color: white;background:#282a36;} 25 a{color:white;} 26 } 27 </style> 28 <link rel="stylesheet" href="/static/syntax.css"> 29 <script src="/static/highlight.pack.js"></script> 30 <script>hljs.initHighlightingOnLoad();</script> 31 </head> 32 <body> 33 <div class="header"> 34 <nav> 35 <a href='/'>index</a> | 36 <a href="/software.html">software</a> | 37 <a href="/blog.html">blog</a> | 38 <a href="/contact.html">contact</a> | 39 <a href="/sysmgr">sysmgr</a> | 40 </nav> 41 </div> 42 <hr> 43 <p> 44 <h1>My thoughts on execline</h1> 45 46 <p>With the gaining popularity of the <a href="https://www.skarnet.org/software/s6-rc/">s6-rc</a>, I have recently decided to check out 47 <a href="https://www.skarnet.org/software/execline/">execline</a>. It is a shell-like scripting language that is built around chaining 48 commands together. There is no interpreter, there is no ‘built-in’ functionality 49 even though the docs might make you think there are. Execline is best described 50 as a suite of tools that imitate the functionality of a shell.</p> 51 52 <p>There are a ton of information on the execline’s page, especially discussing 53 why skarnet prefers execline instead of <code>/bin/sh</code>. Those points are mostly 54 valid, shells are a nightmare, and they suck at being compliant to the POSIX 55 specification. What I don’t agree with the <a href="http://www.skarnet.org/software/execline/dieshdiedie.html">why not sh</a> page, however, is the 56 part on performance. Even though execline does not have an interactive shell 57 implementation of its own, it is still much slower than other shells simply by 58 its design. Since the design of execline is built on process chaining, it 59 requires spawning new processes for things as basic as variable declaration. 60 Variable manipulation is the cheapest operation you would expect from a shell, 61 but in execline, every operation costs the same regardless of how simple it is.</p> 62 63 <p>Throughout my weeks of toying around with execline, I have came to the 64 conclusion that execline is much better in simple scripts only. Execline is 65 as usable as any shell out there, but even with its advantages over <code>sh</code>, 66 execline is only better if it’s simple. Execline is really good for certain 67 specific situations such as service scripts (as used in s6-rc), or where you 68 were already meant to chain a couple of commands together. After all, skarnet 69 already presents these limitations on the website of execline.</p> 70 71 <p>Execline can be leveraged as how s6-rc compiles service databases with other 72 utilities, but I don’t think it can be used as a shell replacement itself. It’s 73 not the next shiny thing to jump on to replace all your shell scripts with 74 (unless you have really basic shell scripts). It does not have the flexibility 75 nor the performance of the shell for scripts that can be considered a little 76 over than the “basic”.</p> 77 </p> 78 <a href="/blog/20211012-execline.txt">This page in plain-text</a> 79 <hr> 80 <p class=footer>Copyright © 2019-2021 Cem Keylan</p> 81 </body> 82 </html>