Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 1 Mar 2017 09:12:59 -0700
From:      Alan Somers <asomers@freebsd.org>
To:        Saurav Sachidanand <sauravsachidanand@gmail.com>
Cc:        Warner Losh <imp@bsdimp.com>,  "freebsd-hackers@freebsd.org" <freebsd-hackers@freebsd.org>, Allan Jude <allanjude@freebsd.org>, Ian Lepore <ian@freebsd.org>
Subject:   Re: [GSoC 2017] Original proposal: Port kernel Lua to FreeBSD
Message-ID:  <CAOtMX2hSTpJmL81NKJVWRUZ=vq66uKTUW0VCSx9-oaqkQ7mpzw@mail.gmail.com>
In-Reply-To: <CACKq%2BiVMd0edbOpg2Hr1bDdFmwekqt78YiCWbaY-iC16gqOW5g@mail.gmail.com>
References:  <CACKq%2BiX_V2MY9sNf-buEOO1S87dbhDv%2BPGbUEqRUVkvzz3pdvw@mail.gmail.com> <244231A2-EB18-4E58-A2B2-927F55D54950@FreeBSD.org> <CANCZdfpiiJLyLbEQnk86mfwf07JGByq5oT_1-T43iEhscEEgMg@mail.gmail.com> <f221e624-1342-7548-a3f9-806a1d25b90d@freebsd.org> <1488383213.60166.10.camel@freebsd.org> <CANCZdfoYk1v9axkT0CqUbCWOaoPrEDoJRPpPk0kk5GDjDE=-fw@mail.gmail.com> <CACKq%2BiVMd0edbOpg2Hr1bDdFmwekqt78YiCWbaY-iC16gqOW5g@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
Python is huge, and we already have people complaining that the
bootloader doesn't fit in their boot partitions ever since it gained
GELI support.  The advantage of Lua is that the embedded interpreter
is very small.  I'd rather not bloat the bootloader too much.

-Alan

On Wed, Mar 1, 2017 at 9:08 AM, Saurav Sachidanand
<sauravsachidanand@gmail.com> wrote:
> Is it related to this project
> https://wiki.freebsd.org/SummerOfCode2014/LuaLoader ?
> Apparently, that project created a generic interface in the bootloader
> to plug in any
> interpreter, and then added Lua.
>
> How about adding Python as well, as a GSoC project? A team from Intel managed to
> get Python to run inside GRUB [1] [2]. I can use their work as a
> reference for modifying
> the Python interpreter.
>
> [1] - https://lwn.net/Articles/641244/
> [2] - https://github.com/biosbits/bits
>
> On Wed, Mar 1, 2017 at 3:51 PM, Warner Losh <imp@bsdimp.com> wrote:
>> On Wed, Mar 1, 2017 at 8:46 AM, Ian Lepore <ian@freebsd.org> wrote:
>>> On Wed, 2017-03-01 at 16:14 +0800, Julian Elischer wrote:
>>>> On 28/2/17 2:01 am, Warner Losh wrote:
>>>> >
>>>> > On Mon, Feb 27, 2017 at 8:26 AM, Allan Jude <allanjude@freebsd.org>
>>>> > wrote:
>>>> > >
>>>> > > On February 27, 2017 5:28:41 AM PST, Saurav Sachidanand <sauravsa
>>>> > > chidanand@gmail.com> 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/module
>>>> > > > s/lua
>>>> > > > [5] -
>>>> > > > https://github.com/IIJ-NetBSD/netbsd-src/tree/master/sys/module
>>>> > > > s/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....
>>>> I'd like to see that finished. While Devin has done Heroic work with
>>>> the forth in the loader, I think it's time has come.
>>>> It' be nice to have something a little less '60s.
>>>>
>>>> >
>>>> >
>>>> > Warner
>>>
>>> I was under the impression that the "lua in bootloader" work was
>>> basically done and just needed testing, which nobody has done.  I think
>>> it's all sitting in the projects/lua-bootloader branch in svn.
>>
>> The branch compiles. Testing has been done, but there's some missing
>> bits. It basically kinda works for the average case, but more advanced
>> uses of the bootloader still have sharp pointy edges on them, the
>> extent of the pointy edges is unknown. At this point the rebasing of
>> the branch is non-trivial due to the merge conflicts that have crept
>> in. They don't look awful, but when I tried to use git to rebase to a
>> more modern FreeBSD, there were lots of stupid things. Maybe I'll try
>> again...
>>
>> Warner
> _______________________________________________
> 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"



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAOtMX2hSTpJmL81NKJVWRUZ=vq66uKTUW0VCSx9-oaqkQ7mpzw>