A multi-bakend compiler for a functional programming language

Cancelado Publicado May 20, 2014 Pagado a la entrega
Cancelado Pagado a la entrega

A compiler for a functional programming language. That language consists of the Simply Typed Lambda Calculus extended with recursion and algebraic datatypes, and is very similar to System F. You will be given the complete language specification, including typing rules and operational semantics. Your job is to create a compiler for the following backends: JavaScript, LLVM, Java, ObjectiveC and Python. Those backends will be used to export programs written in that language to native applications of common operating systems: Windows, Linux, OSX, Android, iOS and the web (Chrome, Firefox, Safari).

As the language consists only of pure, side-effects-free functions, you don't have to worry about IO, threading, system calls etc. The resulting code must compete with hand-written code in the target language in aspects of performance and code size, so it is acceptable to sacrifice operational semantics in favor of faster representations. In other words, instead of porting a runtime, it is preferred to write direct translations, even though they'd disrespect some semantics. For example, the following program, in a Lambda Calculus-like language:

(λx . λy . (sqrt (+ (* x x) (* y y))))

could be compiled to

function(x,y){

return [url removed, login to view](x*x + y*y);

}

or something equivalent, in JavaScript, and the program

(λf . λa . map (λx. f (f x)) a)

could be compiled to

function(f){

return function(a){

var result = [];

for (var i=0,l=[url removed, login to view]; i<x; ++i)

result[i] = f(f(x[i]));

return result;

}

}

even though those are not strictly equivalent to the original programs, due to the approximations such as usage of floats to represent numbers, dynamic arrays to represent lists and functional uncurrying. That is, as long as those approximations result in better performances on the target language, are consistent and predictable (for example, if you are going to uncurry functions, do it in them all), do not differ too much with the original semantics and are properly documented, then you are free to apply them.

We will provide you access to a test machine with a few sample programs and benchmarking/testing scripts. Your implementation will be considered satisfactory as soon as it passes all tests and conforms to performance expectations. We have implemented a prototype of the compiler in JavaScript, which already does those. You will have access to that prototype.

You are free to propose changes in the core language, as long as you justify why you think those will provide better results overall, without sacrificing functionality. You are also free to use any technologies/programming languages you like, as well as reusing existing technologies, as long as the compiler conforms specifications and runs sufficiently fast on the test machine.

The payment can be done via paypal, bank transfer or bitcoins (preferred). Feel free to contact me for more information. Please submit your proposal together with an official note of an approximated cost, as well as examples of previous works on the area.

Programación en C Haskell Arquitectura de software Desarrollo de software

Nº del proyecto: #5965568

Sobre el proyecto

13 propuestas Proyecto remoto Activo May 22, 2014

13 freelancers están ofertando un promedio de $6792 por este trabajo

technosystem

Kindly accept my bid for your Compiler project and be assured of a high quality work with our highly experienced and dedicated developers. Thanks

$25773 USD en 90 días
(13 comentarios)
7.9
omsoftware

A proposal has not yet been provided

$7731 USD en 65 días
(11 comentarios)
6.9
superior5

I am expert in desired skills for this project and have done similar tasks already. Please get back to me, so I can show you some of the work I have done. I will not be asking for any upfront only pay me when you are s Más

$5263 USD en 23 días
(19 comentarios)
7.3
hbxfnzwpf

I am very proficient in c, c++. I have 15 years c++ developing experience now, and I have worked for 5 years. My work is online game developing, and mainly focus on server side, the lauguage is c++ under linux os. So, Más

$5000 USD en 20 días
(33 comentarios)
5.1
kamalteju

A proposal has not yet been provided

$5555 USD en 30 días
(2 comentarios)
2.7
menon1

please check our company freelancer profile http://www.freelancer.com/u/menon1.html we already developed this type of project so we can take your project. why you hire us ? have 5*** with 100% complete rate with we wi Más

$5263 USD en 22 días
(8 comentarios)
2.6
flyonitOZ

A proposal has not yet been provided

$5263 USD en 30 días
(0 comentarios)
0.0
reachramhere

Hi , We, Veltrod software services are a software consulting company specialized in providing Mobile, ECommerce and Social media frameworks using cutting edge and emerging technology. Leveraging best-in-class peop Más

$5154 USD en 30 días
(0 comentarios)
0.0
mjdesa

I love compilers. I'd love to start working on this ASAP. Let me know if you're interested. Checkout Mathquill for a reference of my past work.

$8888 USD en 60 días
(0 comentarios)
0.0