From owner-freebsd-hackers@freebsd.org Mon Feb 27 18:01:26 2017 Return-Path: Delivered-To: freebsd-hackers@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 2EFB3CEFD63 for ; Mon, 27 Feb 2017 18:01:26 +0000 (UTC) (envelope-from wlosh@bsdimp.com) Received: from mail-it0-x243.google.com (mail-it0-x243.google.com [IPv6:2607:f8b0:4001:c0b::243]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id F075FB88 for ; Mon, 27 Feb 2017 18:01:25 +0000 (UTC) (envelope-from wlosh@bsdimp.com) Received: by mail-it0-x243.google.com with SMTP id r141so1713884ita.1 for ; Mon, 27 Feb 2017 10:01:25 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bsdimp-com.20150623.gappssmtp.com; s=20150623; h=mime-version:sender:in-reply-to:references:from:date:message-id :subject:to:cc; bh=0oCRxZ6MDHPlem7g3nxSxGMkhrBy0X3f8xSiMaMkAWk=; b=hd6IoHo0g9HNKcOXvVSqkgykJ464cS/B1BoBQUG2RkUSF9QP6Vztrv5P9RgQmRgAM7 Jk1Y2yJq80fIbk2kwmrwmGEqYQP9eNDZFbWCiS7FhorsVsQFbQMKEHpkjjhPD4Rp5/GV /ApxcUk351tYRsKKqubxyAoi2fy9f2BPu1Kd/1qkD5Nef7eU6Qg/4FY+dSo/ygGm96ug gQNVSvi7/SVBYcONxBXxxryDTGuxiW+Z0GRB9mlLgGq35eFJAFlTGEJRqVGK8r6PgbAx ulCtCThcODJ7l0UbuOuPMmg13Rj8Fxj2mUEBOk0eKKGJmvl8E8qVDgtQB+BWhgtfh1RG 8y2w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:sender:in-reply-to:references:from :date:message-id:subject:to:cc; bh=0oCRxZ6MDHPlem7g3nxSxGMkhrBy0X3f8xSiMaMkAWk=; b=IVkNozItWtGe8E/Vo73Xszw1qflBT1s/2auQG/X2pyfcM2fk3xPUBAZ1XQwKkZshHN J7guWwOQpytkE+pz7/YdbqD6Za8Jwqny0h6rWihw0Bqm0wT/aF/TZ/+TryoG7dDJtKVg b7KwyEGGBQtlx+lX6x0dY4gbNyL954APiTC9NKwtpRXItVPZOxFR6iXeJrej4LxKyV9p 2fxqw9zxtcpevl00BP0pZTcQMgwfT5YYROjBqpf0j5ilGs91itUKGYweRngLxTawHavT bVz1xYu5GJAbBXKp4+WtgsmWs/jpSVvmwcXJIW2GD5WZhiLGxTwSRsSpapWwIfAbWJpd E5ew== X-Gm-Message-State: AMke39ktzc7KDtvXwS0oSLkSLVFAls5d4Ir90jheJbx3ebmNza1YvhxcREbsYI/Y06T20IbDKY0pKRB01Mi1lw== X-Received: by 10.36.147.71 with SMTP id y68mr15505202itd.85.1488218485115; Mon, 27 Feb 2017 10:01:25 -0800 (PST) MIME-Version: 1.0 Sender: wlosh@bsdimp.com Received: by 10.79.134.129 with HTTP; Mon, 27 Feb 2017 10:01:24 -0800 (PST) X-Originating-IP: [69.53.245.200] In-Reply-To: <244231A2-EB18-4E58-A2B2-927F55D54950@FreeBSD.org> References: <244231A2-EB18-4E58-A2B2-927F55D54950@FreeBSD.org> From: Warner Losh Date: Mon, 27 Feb 2017 11:01:24 -0700 X-Google-Sender-Auth: G7rBZQLljkW11dSphZ6n0yiS2_8 Message-ID: Subject: Re: [GSoC 2017] Original proposal: Port kernel Lua to FreeBSD To: Allan Jude Cc: "freebsd-hackers@freebsd.org" , Saurav Sachidanand , soc-admins@freebsd.org Content-Type: text/plain; charset=UTF-8 X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 27 Feb 2017 18:01:26 -0000 On Mon, Feb 27, 2017 at 8:26 AM, Allan Jude wrote: > On February 27, 2017 5:28:41 AM PST, Saurav Sachidanand wrote: >>Hello FreeBSD community, >> >>I'm >> Saurav Sachidanand, and I'm >> a CS sophomore studying in India >>. >>I have an interest in operating systems development and wish to >>contribute >>to the FreeBSD community. I'm proficient with C and have some >>experience in >>kernel programming. Hence, I'd like to propose an original project for >>GSoC >>2017 that I feel would benefit this community. >> >>In past years, the Lua interpreter was ported to run inside the Linux >>and >>NetBSD kernel [1]. Lua was chosen because it's interpreter is very >>small (~240 >>KB) compared to that of Python or Ruby, it's MIT licensed, and is >>almost >>freestanding. A working demonstration of it is a packet filtering >>algorithm >>written entirely in kernel Lua [2]. >> >>Specifically, my proposal would be to port the following that are >>currently >>written for NetBSD: >>- the modified Lua VM source code with _KERNEL preprocessor directives >>to >>exclude user-space functionality like floating point, the io and os >>module >>in the standard library, etc. [3] >>- the kernel module device driver for /dev/lua, to which Lua scripts >>are >>fed to be executed [4], [5] >>- the luactl user-space program to control the Lua device and a couple >>of >>sysctl variables which serve similar purpose [6], [7] >> >>And then: >>- run the Lua test suite targeting whatever we support in the kernel to >>make sure it works [8] >>- and write Lua bindings to the kernel interfaces that would interest >>the >>FreeBSD community >> >>Since NetBSD and FreeBSD have similar kernel interfaces (mutexes, >>linked >>lists, device switch interface), the porting shouldn't involve too much >>code refactoring. Also, this would all be an experiment in that we >>don't >>fully know what the real world use cases might be, but it would attract >>more people to writing kernel code who otherwise wouldn't because of >>having >>to do everything in C. And it would be interesting to carry out it out >>in >>FreeBSD as well since it has a larger community than NetBSD. >> >>I humbly request anyone who is interested in this project to be my >>potential mentor(s) for GSoC. >> >>More slides on kernel Lua in NetBSD - [9], [10]. >> >>Thanks, >>Saurav >> >>[1] - http://www.netbsd.org/~lneto/dls14.pdf >>[2] - https://www.netbsd.org/~lneto/eurobsdcon14.pdf >>[3] - https://github.com/jsonn/src/tree/trunk/external/mit/lua/dist/src >>[4] - >>https://github.com/IIJ-NetBSD/netbsd-src/tree/master/sys/modules/lua >>[5] - >>https://github.com/IIJ-NetBSD/netbsd-src/tree/master/sys/modules/luasystm >>[6] - https://github.com/IIJ-NetBSD/netbsd-src/tree/master/sbin/luactl >>[7] - http://netbsd.gw.com/cgi-bin/man-cgi?lua+4+NetBSD-current >>[8] - http://www.lua.org/tests/ >>[9] - >>https://www.netbsd.org/gallery/presentations/mbalmer/fosdem2012/kernel_mode_lua.pdf >>[10] - https://www.lua.org/wshop13/Cormack.pdf >>_______________________________________________ >>freebsd-hackers@freebsd.org mailing list >>https://lists.freebsd.org/mailman/listinfo/freebsd-hackers >>To unsubscribe, send any mail to >>"freebsd-hackers-unsubscribe@freebsd.org" > > This may be quite a nice thing to have. Another upcoming use for LUA in the kernel is ZFS Channel Programs. These allow a number of ZFS operations to be completed as a single atomic transaction. > > I would hope we could structure this in such a way as to not end up with two copies of Lua in the kernel. There's also a 3/4 finished lua in the boot loader that you might be able to leverage as well.... Warner