Add support for Julia (julialang-backend)
Closed, ResolvedPublic

Description

From hyiltiz@gmail.com in KDE Bugzilla:

Julia is a high-level, high-performance dynamic programming language for technical computing, with syntax that is familiar to users of other technical computing environments. It provides a sophisticated compiler, distributed parallel execution, numerical accuracy, and an extensive mathematical function library. Julia’s Base library, largely written in Julia itself, also integrates mature, best-of-breed open source C and Fortran libraries for linear algebra, random number generation, signal processing, and string processing.

Reproducible: Always

Expected Results: julia has a backend (such as the already supported backends, e.g. Python, R, Octave) so that users could interact with julia from within Cantor.

A project to develop the Julia backend for Cantor was accepted in Google Summer of Code 2016. The author of the project is @ivanlakhtanov.

Welcome Ivan and have a good work!

filipesaraiva moved this task from Backlog to To-Do on the Cantor board.May 15 2016, 2:50 PM

Placing here expected timeline of my work:

23 May - 29 May: 30 May - 5 June: Implementing command execution, error and interrupt handling
6 June - 12 June: Writing unit-tests for command execution
13 June - 19 June: Implementing syntax highlighting
20 June - 26 June: Implementing variable management
27 June - 3 July: Writing unit-tests for variable management
4 July - 10 July: Implementing handling of inline plots
11 July - 17 July: Writing unit-tests for inline plots.
18 July - 24 July: Writing documentation and polishing current results before midterm evaluation
25 July - 31 July: 1 August - 7 August: Implementing tab-completion
8 August - 14 August: Writing unit tests for tab-completion
15 August - 21 August: Writing linear algebra and plotting bindings
22 August - 28 August: 29 August - 4 September: Writing documentation and polishing final results

So, wait for the first results on two weeks.

It seems I've finished with command execution (except unit-tests, will deal with them soon). I can't upload branch to the server, so attaching diff.

I've rewriten it to the DBus and used Julia embedding libraries instead of working with REPL. Tested multiline code, printing, exceptions, syntax errors, interrupting by hand -- everything seems OK.

Have added unit-tests

filipesaraiva moved this task from To-Do to Work in Progress on the Cantor board.Jun 14 2016, 1:08 AM

@ivanlakhtanov your contributions look like correct, please just create the diffs in Differential so I can to review properly.

Please submit you to a developer account and write some blogpost about your work. :)

filipesaraiva moved this task from Work in Progress to Review on the Cantor board.Aug 24 2016, 5:57 PM

Ok, now you can to push all your patches to Cantor repository directly in master branch.
Remember to use the Differential revision special keyword for each commit.

There is no julia.h on build server. How can we fix this?

I will fix it with sysadmin team. But you need to develop a FindJulia.cmake like the others FindSOMETHING.cmake in cantor/cmake/ folder to the build process look for Julia dependence.

After it you can to put something like

find_package(Julia)
if(Julia_FOUND)
    add_subdirectory(julia)
endif(Julia_FOUND)

in cantor/src/backends/CMakeLists.txt file.

Other backends with building dependencies like Analitza5, R and Qalculate use this approach to correctly find their respective dependencies.

filipesaraiva moved this task from Review to Work in Progress on the Cantor board.Sep 5 2016, 2:16 PM
filipesaraiva raised the priority of this task from Wishlist to High.Sep 5 2016, 2:27 PM

Ok, just some changes in management side, I put this task back to "Work in Progress" and increased the priority to "High" because this code is in master, so it will be released in next release cycle.

Do that is the same of put the task in a "Review" column, I think. :)

filipesaraiva moved this task from Work in Progress to Done on the Cantor board.Dec 2 2016, 2:50 PM
filipesaraiva closed this task as Resolved.Jan 2 2017, 3:08 AM

Now julia-backend was released and Ivan is the backend maintainer. Congratulations @ivanlakhtanov, your task was completed! Please, stay at least some months with us maintaining the julia-backend.

If you have some feedback about new features, please report in Cantor workboard and let's work to improve our software!

Congrats @ivanlakhtanov and @filipesaraiva ! I was organizing my reports in bugs.kde.org and found this awesome work. Cheeers!