TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

Developing V8 with Guix

73 pointsby apaprockialmost 10 years ago

9 comments

davexunitalmost 10 years ago
I wonder if wingo knows about the 'guix environment' tool or not. It can create dev environments with the correct environment variables configured on the fly, without creating a new profile or polluting an existing one. Profiles are still useful for persistence, but I use 'guix environment' for all of my day-to-day hacking so I don't have to periodically delete generations of a profile in order for the GC to collect them.
KirinDavealmost 10 years ago
I&#x27;ve tried using Nix a few times. The idea is in principle not bad, but the actual deployment for, say... an API endpoint? Horrendous.<p>Problems include:<p>1. Scripts deployed almost never appeal to &#x2F;usr&#x2F;bin&#x2F;env, they tend to hardwire interpreters to &#x2F;bin&#x2F;sh. This flat out doesn&#x27;t work in NixOS, and the Nix team is ideologically opposed to maintaining a compat layer for specific cases like this.<p>2. Compiled binaries are compiled to this SPECIFIC version of Nix. That may not seem like a bad thing, but the reality is that it&#x27;s very abusive to work with. Your binaries cannot even be invoked becuase they cannot <i>find</i> their links (including, you know, the C bootstrapping lib). This means you can make an executable on your dev box, try and push it to prod, and because prod doesn&#x27;t have something like a dtrace library the entire system is incompatible with your executable.<p>3. There are tools to assist with these problems, because they&#x27;re so common. However, they themselves are full of edge cases they don&#x27;t solve for that they&#x27;re very hit-or-miss. While this isn&#x27;t bad in and of itself, it tends to make the established userbase very unsympathetic and often very formulaic when you approach them with more subtle linking issues. This can be quite frustrating.<p>I found the entire system somewhat unworkable. I also feel like Docker or Rocket solves a lot of the practical problems I have there, despite protestations. Container images are perfectly reproducible, but also easy to update. They also tend not to rip themselves apart if you, in a moment of intellectual weakness, give a slightly confusing order to the nixos package manager and rip your system in half.
评论 #10007194 未加载
评论 #10006985 未加载
vezzy-fnordalmost 10 years ago
<i>They use &quot;deco&quot; as an init system, for example, which is kinda like systemd but not.</i><p>The init system is actually GNU dmd. deco is the name of the control utility (like systemctl is to systemd).<p>It also has absolutely nothing in common with systemd, so I don&#x27;t know why the author made that comparison.
评论 #10004820 未加载
ameliusalmost 10 years ago
&gt; but it is just unacceptable and revolting that software development in 2015 is exposed to an upgrade process which (1) can break your system (2) by default and (3) can&#x27;t be rolled back.<p>I would like to add that building a system that makes it difficult to reproduce the exact same state on another machine, even if the central&#x2F;distributed repository it originated from is not available, should be considered malpractice.
mrottenkolberalmost 10 years ago
Just an anecdote: Since I started using Slackware Linux, I have never had any problem with my system.<p>I like the idea of functional package managers, Guix especially. But for me personally the problem they are trying to solve does not exist.
评论 #10005646 未加载
评论 #10005350 未加载
zzalphaalmost 10 years ago
Huh... I had no idea Nix and Guix could be used this way. I viewed them as replacements to <i>apt</i>, but what I&#x27;m hearing is I could just as easily use it as a souped up <i>stow</i>... interesting...
sandGorgonalmost 10 years ago
IMHO, there is only a little bit of separation between Docker and Nix&#x2F;Guix.<p>I wonder if the Linux desktops of tomorrow will be a thin hypervisor (or something like CoreOS), running a immutable VM on top.
评论 #10005356 未加载
评论 #10005368 未加载
knodi123almost 10 years ago
What&#x27;s the significance of &quot;V8&quot;? He means the javascript engine, right? But that never enters into the story.... It&#x27;s really just &quot;Developing with Guix&quot;.
评论 #10005033 未加载
评论 #10005012 未加载
e12ealmost 10 years ago
I&#x27;m a little surprised that a veteran Debian user would fall into this kind of trap (again :). I think guix looks very interesting, but a couple of tips if &quot;all&quot; you need is to &quot;code on the edge&quot; in Debian:<p>1) Run Debian stable. Possibly add stuff from backports if you <i>need</i> to (eg: newer kernel for drivers. Newer xorg. Hopefully this shouldn&#x27;t ever be needed for mainstream workstations - modulus closed source graphics drivers).<p>2) Don&#x27;t mix&#x27;n&#x27;match [packages from testing&#x2F;unstable with stable]. Don&#x27;t pin. Just do not do it. [Don&#x27;t run testing&#x2F;unstable... unless you <i>are testing</i> testing].<p>3) For utilities not in stable - some can go in ~&#x2F;opt&#x2F;{bin,lib,man} -- living in ~&#x2F;opt&#x2F;xstow&#x2F;$package-$version&#x2F; -- see &quot;man xstow&#x2F;apt-get install xstow&quot; -- and set your path, ld-path, man-path (&quot;man man&quot;) and friends to point to ~&#x2F;opt&#x2F;man etc.<p>I also have a ~&#x2F;opt&#x2F;venv&#x2F;util&#x2F;bin in my path so I can go &quot;pip install mercurial&quot; without worrying about system python packages etc. If you go down this path be aware of &quot;apt-get build-dep mercurial|python-$foo&quot; as a reasonably sane way to get system dev headers for c libraries things you pip install in your venv(s).<p>Think of the venvs as disposable! Might have to trash them on a dist-upgrade and recreate. Ditto for ~&#x2F;xstow.<p>But none of that is <i>much</i> better than the mess Wingo found himself in, therefore:<p>4) Embrace the glorious trinity formed by lvm, schroot and debootstrap! With lvm-backed schroots you can have a source-chroot for each of testing, sid&#x2F;unstable and experimental. Complete with rollback, named snapshots and automagic binding of $home (with among other obvious benefits - your x session cookie).<p>Schroot documentation&#x2F;wiki&#x2F;howto do need a facelift, though.<p>See also:<p><a href="https:&#x2F;&#x2F;www.pseudorandom.co.uk&#x2F;2007&#x2F;sbuild&#x2F;" rel="nofollow">https:&#x2F;&#x2F;www.pseudorandom.co.uk&#x2F;2007&#x2F;sbuild&#x2F;</a><p><a href="https:&#x2F;&#x2F;wiki.debian.org&#x2F;Schroot&#x2F;e" rel="nofollow">https:&#x2F;&#x2F;wiki.debian.org&#x2F;Schroot&#x2F;e</a><p><a href="https:&#x2F;&#x2F;wiki.debian.org&#x2F;CrossCompiling" rel="nofollow">https:&#x2F;&#x2F;wiki.debian.org&#x2F;CrossCompiling</a><p>[Note that auto-bind-mounting home can now be set in schroot.conf IIRC -- see man schroot]<p>PS: If you have $home on nfs and mount it on both 32bit&#x2F;64bit linux as well as Solaris... you can put stuff in ~&#x2F;opt&#x2F;$arch&#x2F;.. and dance around in .xsession and&#x2F;or .bashrc... but I don&#x27;t recommend it unless you have to...