From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp10.migadu.com ([2001:41d0:303:e224::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms8.migadu.com with LMTPS id eGPdBSnpQGU6QgAAG6o9tA:P1 (envelope-from ) for ; Tue, 31 Oct 2023 12:46:49 +0100 Received: from aspmx1.migadu.com ([2001:41d0:303:e224::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp10.migadu.com with LMTPS id eGPdBSnpQGU6QgAAG6o9tA (envelope-from ) for ; Tue, 31 Oct 2023 12:46:49 +0100 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by aspmx1.migadu.com (Postfix) with ESMTPS id A63406665C for ; Tue, 31 Oct 2023 12:46:48 +0100 (CET) Authentication-Results: aspmx1.migadu.com; dkim=pass header.d=flokli.de header.s=mail header.b=qnitZcYZ; dmarc=none; spf=pass (aspmx1.migadu.com: domain of "guix-devel-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="guix-devel-bounces+larch=yhetil.org@gnu.org" ARC-Seal: i=1; s=key1; d=yhetil.org; t=1698752808; a=rsa-sha256; cv=none; b=XLl3eKtrOB2Bj/jPhW4pEn+nm+gTJ+7/l4JH3R1NErpf7/0lf0z/8TB2MU+/DpxXjryUCi TuDXyFpNMBdxubFa9/lnekCCoh1uz+alqKkjYGULA5fjeflyttISwlPcpWzGp20lsOH2Gv WieZgNgcDBtP+Bm7kY2211w4DSS46wU3+v3musQwRUPUvYfU2Hl8ZkdpiglF7Q8oydd4vt e95/eb6zS+VNbRpvFpdTkyOv48x5BirjbsB8fgEIXfx9atQbH1lqEE4yyc3QmbelSqewD2 oD1wvRNwJhpZMXj9CFEhdkHnadbm1z+HRW3JvIA418n5g1LbhFAIj7Tw0b0MKw== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=pass header.d=flokli.de header.s=mail header.b=qnitZcYZ; dmarc=none; spf=pass (aspmx1.migadu.com: domain of "guix-devel-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="guix-devel-bounces+larch=yhetil.org@gnu.org" ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1698752808; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type:list-id:list-help:list-unsubscribe: list-subscribe:list-post:dkim-signature; bh=eC59cEC8ru4ocjo2BABr/DP5CeUbBLBjoVIyM8py9c4=; b=rIHXnUuCL/V/OVyP4Rpq/g/GzJFde31/OWhaZg/U7jIIJNTPfZoREP7VERSW1wbDMlGiPy eZegxp3owp2JpAr45uZQ0SHCSzyTA9fcuHC5AJLDcXcQ36A36qutTWwNLPjnagbhn3ecnM okvsejv50SzBf4ToiHT1erts+YjVz9ENmmy8cnK0GMECpJGyho71AZKGdP1q8pmdg3DCKc IF6ZE+SFav6nL4KgDkfkORWtA2/ATZi2V7uk5rlwiX5kP13ASs8ys/QUNfHpdwpFmXhO+O 6+10EfhYQOpEdoe8ncrSN96JxsE4YeW7ZgUizMfHSSo4pn0iEyHIopkhnmXyCQ== Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qxnCA-0003Jp-7C; Tue, 31 Oct 2023 07:46:06 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qxZP3-000571-37 for guix-devel@gnu.org; Mon, 30 Oct 2023 17:02:29 -0400 Received: from mail.flokli.de ([2a01:4f8:1c1e:e12f::1]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qxZP0-0003Hw-O0 for guix-devel@gnu.org; Mon, 30 Oct 2023 17:02:28 -0400 Date: Mon, 30 Oct 2023 23:02:18 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=flokli.de; s=mail; t=1698699739; bh=eC59cEC8ru4ocjo2BABr/DP5CeUbBLBjoVIyM8py9c4=; h=Date:From:To:Subject; b=qnitZcYZCjeAM4+uGOdOl9adk/3vkaL/doa1+ZhmtapQtwwWHQ6DeQcLf7tRgKit0 qZqtef6SN2Cropa1JYq80vP2sb5bPbEwKPfXbP/FeF3f4vvHCJiNNkjz571QGjPqNR Plav+cOEOvvD8J3d17oSqMm2EiLMaUZs3PMG9VPU= From: Florian Klink To: guix-devel@gnu.org Subject: Nix Daemon protocol post / Tvix Message-ID: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Disposition: inline Received-SPF: pass client-ip=2a01:4f8:1c1e:e12f::1; envelope-from=flokli@flokli.de; helo=mail.flokli.de X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Mailman-Approved-At: Tue, 31 Oct 2023 07:45:53 -0400 X-BeenThere: guix-devel@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "Development of GNU Guix and the GNU System distribution." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-devel-bounces+larch=yhetil.org@gnu.org Sender: guix-devel-bounces+larch=yhetil.org@gnu.org X-Migadu-Flow: FLOW_IN X-Migadu-Country: US X-Migadu-Queue-Id: A63406665C X-Migadu-Scanner: mx12.migadu.com X-Migadu-Spam-Score: -3.31 X-Spam-Score: -3.31 X-TUID: WfGxP3LkPzcA Hey, I stumbled across your post https://guix.gnu.org/blog/2023/a-build-daemon-in-guile/. I'm working on Tvix (https://tvix.dev/), a reimplementation of Nix in Rust. Different components are nicely separated, some of the nix-specific protocols and formats are developed in a independent, intended to be general-purpose `nix-compat` crate that doesn't depend on Tvix itself. All with hopefully comprehensive documentation and a lot of test cases. Tvix can already evaluate bigger chunks of nixpkgs the same way as Nix, and come up with the same calculated output paths :-) Some of the protcols are implemented in a nicer fashion, while providing a Nix-compatible "view" into the system. For example, tvix-store is using a content-addressed merkle storage DAG (tvix-castore) under the hood, allowing partial substitution and store path subtree sharing. However we can still provide a Nix-compatible view into all this, so can synthesize NAR Archives and NARInfo files for a given store path on demand, if we want to. We currently use the HTTP Binary cache protocol as a store interface for Nix (via `nar-bridge`, which spins up a webserver). At some point, we now also want to implement the daemon protocol - both a client and server, to allow talking to Nix more directly - be it a "remote store", or just querying the local Nix store for certain information. This is so far mostly oriented towards store operations (as we didn't do too much work on the Builder interface yet) Nevertheless, I think we should collaborate. Be that: - just a simple exchange of notes about the behaviour of the protocol and certain operations - discussions about designing new protocols, ensuring interop between tvix-store and guix stores (there's some ideas for P2P substitution) - or even collaboration and work on getting tvix-store (and tvix-build, once it's there) to work with a Guile frontend :-) I think we're sharing a lot of common interest and would like to start having these conversations :-) Cheers, flokli Some links: - Tvix status update from NixCon 2023 (https://media.ccc.de/v/nixcon-2023-35254-tvix) - Tvix Website: https://tvix.dev/ - Code: https://code.tvl.fyi/tree/tvix