Re: [rust-dev] [Google Summer of Code 2013] - Mozilla Rust language bindings
Hi! On Thu, 14 Feb 2013 15:26:46 +1300, Nolan Tunnicliffe no...@2ndnature.co.nz wrote: http://www.reddit.com/r/rust/comments/18dfd6/gsoc_2013_started_any_rust_project_ideas/ Thanks for this proposal (the very first we (GNU Hurd) get this year)! Looks like a good project to me. As you posted it on bug-h...@gnu.org, I'll assume you'd like it discussed there. I'd also be fine posting/subscribing to a Rust mailing list. [Well, in fact I simply cross-posted the email there (and tried subscribing, which currently doesn't seem to work, though); please keep everyone in copy.] Reddit would be an unusual place (for us, at least) to discuss technical topics. Many of my following questions may already be answered in the regular Rust documentation -- which I have not yet had the chance to chase up. Of course it is fine to simply give pointers that answer my questions. Rust is a language sponsored by Mozilla who are using it to write a next generation web browser engine. It is low level hardware access capable, making it a potential replacement for C and C++ for writing device drivers. Please verify (or ask us to help looking at the Rust sources if you're unsure): it does have a functional x86 (that is, 32-bit) GNU/Linux port, which generally is implemented on top of the usual Unix/POSIX as well as glibc APIs (»#define _GNU_SOURCE«), and makes little or no use of direct Linux kernel syscalls (such as futex, for example). From http://www.rust-lang.org/ : Rust is a curly-brace, block-structured expression language. It visually resembles the C language family, but differs significantly in syntactic and semantic details. Its design is oriented toward concerns of programming in the large, that is, of creating and maintaining boundaries - both abstract and operational - that preserve large-system integrity, availability and concurrency. It supports a mixture of imperative procedural, concurrent actor, object-oriented and pure functional styles. Rust also supports generic programming and metaprogramming, in both static and dynamic styles. Look, it has *all of it*! ;-) Memory safety no null or dangling pointers, no buffer overflows How is this implemented? Internal reference counting, or garbage collection? If the latter, which engine? Concurrency lightweight tasks with message passing, no shared memory How implemented? Standard pthread interfaces or some internal thing (using which kernel interface)? Exception handling unrecoverable unwinding with task isolation Requiring run-time/operating system support, or based on standard DWARF? Memory model optional task-local GC, safe pointer types with region analysis Aha, garbage collection. How implemented/which engine? (Boehm?) Compilation model ahead-of-time, C/C++ compatible More specifically, how do you get from Rust source code to executing machine code? What is your expertise as a Rust programmer (using Rust), Rust developer (developing Rust itself), and programming language implementation generally, focussing not on the copmuter science part of it ;-) but on the actual implementation, host system interfaces, and so on? In the following the terminology is sometimes unclear (maybe this simply is new ground for you?), for example, often when you say »kernel« that should -- in our terminology -- be »operating system«; by kernel we normally understand the GNU Mach microkernel, the base of the operating system. What experience do you have with operating system implementation? (These questions, by the way, are just so that we get a feeling about what we can roughly expect you to know, and what we first have to teach you -- but no problem with that, of course!) For the Google Summer of Code 2013, Port the Mozilla Rust http://www.rust-lang.org/ programming language to GNU Hurd, Mach based operating system microkernel. GNU Hurd microkernel allows any language that can RPC Remote Procedure Call http://www.gnu.org/software/hurd/hurd/rpc.html to write kernel 'servers' ie. components of the kernel that in Mach's case run in User mode as opposed to Kernel mode. Allowing an existing modern functioning kernel to be written, extended and potentially parts rewritten in Rust. Kernel writers would use a modern low level capable language, Rust, to extend a functioning kernel and components in a language that was designed to preserve large-system integrity, availability and concurrency, some of the same goals of GNU Hurd project itself. This in fact is a separate project, which first requires a general port of the Rust programming environment to GNU/Hurd, which I cannot judge yet how difficult it will be. But of course it (enabling Hurd interfaces (RPCs) in Rust) is a very desirable follow-on project! GNU Hurd allows runtime installation of user mode, and most are, kernel components that do not require root access or a reboot to install and if they crash do not bring the whole kernel down. Unlike most
Re: [rust-dev] [Google Summer of Code 2013] - Mozilla Rust language bindings
Hi! On Thu, 14 Feb 2013 15:26:46 +1300, Nolan Tunnicliffe no...@2ndnature.co.nz wrote: http://www.reddit.com/r/rust/comments/18dfd6/gsoc_2013_started_any_rust_project_ideas/ Thanks for this proposal (the very first we (GNU Hurd) get this year)! Looks like a good project to me. As you posted it on bug-h...@gnu.org, I'll assume you'd like it discussed there. I'd also be fine posting/subscribing to a Rust mailing list. [Well, in fact I simply cross-posted the email there (and tried subscribing, which currently doesn't seem to work, though); please keep everyone in copy.] Reddit would be an unusual place (for us, at least) to discuss technical topics. Many of my following questions may already be answered in the regular Rust documentation -- which I have not yet had the chance to chase up. Of course it is fine to simply give pointers that answer my questions. Rust is a language sponsored by Mozilla who are using it to write a next generation web browser engine. It is low level hardware access capable, making it a potential replacement for C and C++ for writing device drivers. Please verify (or ask us to help looking at the Rust sources if you're unsure): it does have a functional x86 (that is, 32-bit) GNU/Linux port, which generally is implemented on top of the usual Unix/POSIX as well as glibc APIs (»#define _GNU_SOURCE«), and makes little or no use of direct Linux kernel syscalls (such as futex, for example). From http://www.rust-lang.org/ : Rust is a curly-brace, block-structured expression language. It visually resembles the C language family, but differs significantly in syntactic and semantic details. Its design is oriented toward concerns of programming in the large, that is, of creating and maintaining boundaries - both abstract and operational - that preserve large-system integrity, availability and concurrency. It supports a mixture of imperative procedural, concurrent actor, object-oriented and pure functional styles. Rust also supports generic programming and metaprogramming, in both static and dynamic styles. Look, it has *all of it*! ;-) Memory safety no null or dangling pointers, no buffer overflows How is this implemented? Internal reference counting, or garbage collection? If the latter, which engine? Concurrency lightweight tasks with message passing, no shared memory How implemented? Standard pthread interfaces or some internal thing (using which kernel interface)? Exception handling unrecoverable unwinding with task isolation Requiring run-time/operating system support, or based on standard DWARF? Memory model optional task-local GC, safe pointer types with region analysis Aha, garbage collection. How implemented/which engine? (Boehm?) Compilation model ahead-of-time, C/C++ compatible More specifically, how do you get from Rust source code to executing machine code? What is your expertise as a Rust programmer (using Rust), Rust developer (developing Rust itself), and programming language implementation generally, focussing not on the copmuter science part of it ;-) but on the actual implementation, host system interfaces, and so on? In the following the terminology is sometimes unclear (maybe this simply is new ground for you?), for example, often when you say »kernel« that should -- in our terminology -- be »operating system«; by kernel we normally understand the GNU Mach microkernel, the base of the operating system. What experience do you have with operating system implementation? (These questions, by the way, are just so that we get a feeling about what we can roughly expect you to know, and what we first have to teach you -- but no problem with that, of course!) For the Google Summer of Code 2013, Port the Mozilla Rust http://www.rust-lang.org/ programming language to GNU Hurd, Mach based operating system microkernel. GNU Hurd microkernel allows any language that can RPC Remote Procedure Call http://www.gnu.org/software/hurd/hurd/rpc.html to write kernel 'servers' ie. components of the kernel that in Mach's case run in User mode as opposed to Kernel mode. Allowing an existing modern functioning kernel to be written, extended and potentially parts rewritten in Rust. Kernel writers would use a modern low level capable language, Rust, to extend a functioning kernel and components in a language that was designed to preserve large-system integrity, availability and concurrency, some of the same goals of GNU Hurd project itself. This in fact is a separate project, which first requires a general port of the Rust programming environment to GNU/Hurd, which I cannot judge yet how difficult it will be. But of course it (enabling Hurd interfaces (RPCs) in Rust) is a very desirable follow-on project! GNU Hurd allows runtime installation of user mode, and most are, kernel components that do not require root access or a reboot to install and if they crash do not bring the whole kernel down. Unlike most
Re: [rust-dev] Google Summer of Code
On Tue, Feb 12, 2013 at 6:07 AM, Benjamin Striegel ben.strie...@gmail.com wrote: GSoC is starting up soon: http://www.google-melange.com/gsoc/homepage/google/gsoc2013 Does anyone want to get Rust in on this? The feeling among the core team is that at least this year, we don't have the energy/resources to (as part of Mozilla) start a Summer of Code project ourselves. Since it's the summer, we will have interns to supervise and additional mentoring is just going to be too much. If a very motivated community member wanted to coordinate a project and recruit mentors from the community, there's a possibility (I can't promise anything) that we could put our name on it, as Mozilla. Cheers, Tim -- Tim Chevalier * http://catamorphism.org/ * Often in error, never in doubt Too much to carry, too much to let go Time goes fast, learning goes slow. -- Bruce Cockburn ___ Rust-dev mailing list Rust-dev@mozilla.org https://mail.mozilla.org/listinfo/rust-dev