Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 23 Mar 2017 11:03:49 +0800
From:      Julian Elischer <julian@freebsd.org>
To:        Warner Losh <imp@bsdimp.com>, Allan Jude <allanjude@freebsd.org>
Cc:        "freebsd-hackers@freebsd.org" <freebsd-hackers@freebsd.org>, Saurav Sachidanand <sauravsachidanand@gmail.com>
Subject:   Re: [GSoC 2017] Original proposal: Port kernel Lua to FreeBSD
Message-ID:  <9db670f6-54d1-7862-bcd2-7c80df92e724@freebsd.org>
In-Reply-To: <f221e624-1342-7548-a3f9-806a1d25b90d@freebsd.org>
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>

next in thread | previous in thread | raw e-mail | index | archive | help
On 1/3/17 4:14 pm, 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 
>>> <sauravsachidanand@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/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....
>
> 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.
some news:  Pedro Arthur who did the project just mailed me:

===================

Hi,
I've just finished getting the lua-bootloader code on top of HEAD, it 
should compile and run fine.
The code can be found in [1].

[1] - https://github.com/grandao/freebsd/tree/projects/lua-bootloader

===================
so it's up to date and we should look at it 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?9db670f6-54d1-7862-bcd2-7c80df92e724>