How do I get started with developing features for julia?

405 views
Skip to first unread message

Traktor Toni

unread,
Jul 6, 2015, 3:50:02 PM7/6/15
to juli...@googlegroups.com
Is there an article? Compiling llvm, getting the sources into qtcreator, setting up gdb to debug, What's the workflow? 

I would love to hear from core developers how new features are being made or debugged so I can get started as well.

Yichao Yu

unread,
Jul 6, 2015, 4:16:34 PM7/6/15
to Julia Dev
As someone who joint recently, my advice is to try it and try to fix
small bugs or make small improvements. As long as you spend reasonable
amount of time on it, you will get to learn more and more about julia
naturally.

For exactly what to start, I think there's some intro-issues (label)
on the issue tracker that should be good starting points. You can also
(as in my case) try to find some yourself. As a pre-mature project,
it's not that hard to find places to improve.

As for the workflow and tools, I think everyone has their own ones.
The readme should have pretty good description of how to compile
julia. IIRC there should also be some tips about using Git and others
in the contribution doc.

Isaiah Norton

unread,
Jul 6, 2015, 4:21:14 PM7/6/15
to juli...@googlegroups.com
Welcome. There are build instructions in the README (see README.Windows for some platform specifics):


See also the contributor notes:

There are some helper files for various editors under `contrib/`, and externally in the case of vim [1]. I'm not aware of anything for QtCreator. Support files for emacs and vim are probably the most actively-maintained, but developers use a wide range of tools.

One strong recommendation: if you are not already familiar with the relevant tools, spend some time familiarizing yourself -- especially with git ("repo", "push", "squash", and "rebase" should sound at least vaguely familiar). Along the same lines: start small -- doc fixes and test improvements are usually uncontroversial and always appreciated.


On Sun, Jul 5, 2015 at 7:31 AM, Traktor Toni <trust...@gmail.com> wrote:

Tim Holy

unread,
Jul 6, 2015, 5:16:25 PM7/6/15
to juli...@googlegroups.com
As others have said, start small and get more ambitious once you know how the
process works. Here's a good issue for getting started:
https://github.com/JuliaLang/julia/issues/11885

--Tim

Katie H

unread,
Jul 7, 2015, 2:32:05 PM7/7/15
to juli...@googlegroups.com
As the author of that issue, we also have a Gitter (https://gitter.im/kshyatt/julia-coverage) where you're welcome to hang out and ask for feedback/advice. If you have any questions about looking for some good spots to test/fill out features, I'd be happy to try to answer them!

Traktor Toni

unread,
Jul 8, 2015, 2:59:15 PM7/8/15
to juli...@googlegroups.com
I know you all mean well but your answers didn't really help me a lot yet. I have already compiled julia but now I'm looking at the src folder and I'm asking myself "am i just supposed to change something in abi_llvm.cpp, then run the entire make step again, wait, see if that changed something and then try again?"
Surely that isn't exactly a recipe for success? 
What's the architecture of julia? I understand that julia has a dependency on llvm right? Is it a binary dependency and we just use llvm's api?
which parts of julia are llvm based?
So julia is generating llvm "modules" on the fly right, that will be our runtime code. So if I wanted to add a new feature to julia, I'd need to create a new llvm module?
Would you say that deep llvm knowledge is a must for most julia development?
What kind of debug info is currently being generated? Is it dwarf? Can I use gdb and step over c and julia at the same time or is that not an intended scenario, i.e: do we want a debugger api like the chrome remote debugging protocol or a more traditional gdb supported approach?
The rust devs say they may need special support in the dwarf standard to get "proper" debugging symbol support, is that the case for julia as well?

Randy Zwitch

unread,
Jul 8, 2015, 3:12:50 PM7/8/15
to juli...@googlegroups.com
What features you'd like to add? A great deal (a majority?) of the Julia functionality is written in Julia, or wraps APIs from other languages. So we can probably assume that you aren't going to need to write C++ code, unless you're trying to fix something that relies on one of those libraries.

The following is a trivial example of extending functionality in Julia. You can do this in any Julia environment (REPL, Jupyter Notebook, Juno, etc.)

julia> import Base.sin


julia> function sin(x::String)

           println("What a dumb modification!")

       end

sin (generic function with 12 methods)


julia> sin("randy")

What a dumb modification!


If you want to actually contribute this to the Julia distribution, then you would go to where Base.sin is defined, add your code, and submit a pull request to GitHub. Depending on the usefulness, it may/may not get merged. After merging, when people run the makefile or use a pre-compiled binary, then this method signature would be available to them.

Traktor Toni

unread,
Jul 8, 2015, 3:42:31 PM7/8/15
to juli...@googlegroups.com
I'm mostly interested in getting proper debugging support and maybe a way to get intellisense in julia

Isaiah Norton

unread,
Jul 8, 2015, 3:57:58 PM7/8/15
to juli...@googlegroups.com
Debugging is still a work in progress. Julia does emit DWARF, but the usefulness may vary somewhat by platform. At least on linux with llvm 3.3 (current default) you should get julia function names interspersed with C functions for all stack frames in gdb. Setting breakpoints in Julia files may work but can be finicky due to inlining and macro expansion. If you build julia against llvm-svn there are some improvements.

The MSVC compiler is not really supported yet. There is no Visual Studio integration whatsoever.

Yee Sian Ng

unread,
Jul 8, 2015, 4:02:51 PM7/8/15
to juli...@googlegroups.com
You may also want to get started with Keno's talk from JuliaCon 2014. Then have a look at the design and implementation of debugging packages in julia, e.g. toivoh/Debug.jl and maybe Keno/DIDebug.jl and Keno/REPLCompletions.jl.

Tony Kelman

unread,
Jul 10, 2015, 2:43:59 AM7/10/15
to juli...@googlegroups.com
The MSVC compiler is not really supported yet. There is no Visual Studio integration whatsoever.

On a very experimental basis there is minimal support for using MSVC to build Julia against gcc-built dependencies, see https://github.com/JuliaLang/julia/issues/12056

If the plugin architecture for the new Visual Studio Code editor has been made open yet, incorporating Julia support, highlighting, tab completion, etc into that would be a cool project.

Reply all
Reply to author
Forward
0 new messages