Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 27 Feb 2017 19:01:43 +0530
From:      Saurav Sachidanand <sauravsachidanand@gmail.com>
To:        freebsd-hackers@freebsd.org
Subject:   [GSoC 2017] Original proposal: Port kernel Lua to FreeBSD
Message-ID:  <CACKq%2BiXanfuu506LoBbKkh4p2w5cqzZ7cE0pMtmG7iygSurBmw@mail.gmail.com>

next in thread | raw e-mail | index | archive | help
Hello FreeBSD community,

I'm
=E2=80=8B Saurav Sachidanand, and I'm=E2=80=8B
 a CS sophomore studying in India
=E2=80=8B.
 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



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CACKq%2BiXanfuu506LoBbKkh4p2w5cqzZ7cE0pMtmG7iygSurBmw>