You might need to be more specific than "doesn't work"; I tried it last week and it worked for me. The usage is essentially the same (the macro in v0.5 takes an extra argument of the return type, but the deprecation warning should note this already).
On Wed, May 18, 2016 at 7:59 AM Ján Adamčák <[email protected]> wrote: > Thanks @Jameson > > Do you have an idea, how the compilation will work on v0.5 release? I have > tried with recent commits of master, but @ccallable doesn't work. > > > > Dňa sobota, 14. mája 2016 1:17:45 UTC+2 Jameson napísal(-a): >> >> > without jl_init() >> >> That is not implemented at this time, although patches are welcome. >> >> > it has something to do with ccallable >> >> Yes, it also is orthogonal to compile-all. It is possible that >> compile-all is non-functional on v0.4 on Windows, I know master has many >> enhancements, which may have included more stable Windows support. I >> suggest playing with these two options independently before jumping into >> combining them. >> > On Fri, May 13, 2016 at 2:39 PM Ján Adamčák <[email protected]> wrote: >> >>> Thanks @Jameson, >>> >>> >>> I have successfully built .so with "--compile=all" flag on 0.5-dev on >>> ubuntu 16.04, but my .so library is 110MB. The same compilation on >>> Win10 crashes. I can call >>> >>> my function in c++ code using jl_init and jl_get_function. >>> >>> >>> My primary goal is to compile a dll with my own exported function, which >>> I can call without jl_init(). I think it has something to do with >>> ccallable, which you have mentioned. I'm stacked at this point. Could you >>> please explain in more details, or point me to Julia code, how to move >>> forward? >>> >>> >>> Thanks in advance. >>> >>> -jan >>> >>> Dňa piatok, 13. mája 2016 4:30:41 UTC+2 Jameson napísal(-a): >>>> >>>> We have been working on a number of simplifications on master, so some >>>> of the best practices and extra steps aren't necessary anymore. But it >>>> should still work on v0.4. >>>> >>>> There are a few different goals that can be accomplished by invoking >>>> the Julia compiler directly, so it was a bit difficult to write that blog >>>> post talking about them all generically. Since it touches on several of the >>>> optimization options, I structured it in part to show how these layers can >>>> build on each other. But I decided to leave out demonstrations of how >>>> mixing various layers and options can be used to create other products. >>>> >>>> Since most of these steps are already configured in the Julia build >>>> system, one of the easiest ways to augment it is to simply drop a >>>> userimg.jl file into base/ >>>> This will then get incorporated into the usual build and become part of >>>> the pre-defined system image. >>>> >>>> The `-e nothing` stage is there because you have to give it something >>>> to evaluate (a file, stdin, or `-e`, etc.), or it will pop open the REPL >>>> and wait for the user to enter commands. This is actually also a valid way >>>> to create an executable and can be fun to play with as a development >>>> exercise (I still do this on occasion to test out how it is handling odd >>>> cases). >>>> >>>> To get a ccallable declaration to show up in the binary, the only >>>> condition is that you must declare it ccallable in the same execution step >>>> as the final output. >>>> >>>> -jameson >>>> >>>> >>>> On Thu, May 12, 2016 at 10:23 AM Ján Adamčák <[email protected]> wrote: >>>> >>>>> Thanks @Jameson, >>>>> >>>>> I am a bit confused about "you are not adding any code to the system >>>>> image (`--eval nothing`)". According to your blog >>>>> http://juliacomputing.com/blog/2016/02/09/static-julia.html , I think >>>>> that this is a crucial point to obtain a small sized dll. Am I right? >>>>> >>>>> What is then the right way to emit "ccallable" declarations in order >>>>> to export julia function(s)? (foo in our example from the original post in >>>>> this thread) >>>>> >>>>> Is it okay to work with current version of julia 0.4.5. or I have to >>>>> switch to another version; If yes, to which one? >>>>> >>>>> Thanks in advance. >>>>> >>>>> Dňa utorok, 10. mája 2016 22:13:57 UTC+2 Jameson napísal(-a): >>>>> >>>>>> The compile-all flag is only partially functional on v0.4. I think >>>>>> it's best to just leave it off. I tested on master and fixed a bug with >>>>>> emitting `@ccallable`, but that's unrelated. From the command line below, >>>>>> it looks like you are not adding any code to the system image (`--eval >>>>>> nothing`) which would also means there are no `ccallable` declarations >>>>>> being emitted into the current compile. >>>>>> >>>>>> Other than that, I don't see anything wrong with that command. You >>>>>> shouldn't see that error unless you tried to make a Task or use `@async` >>>>>> from the compile host. It's ambiguous how that would be serialized, so >>>>>> it's >>>>>> simply an error and any parallel workers should be created / started by >>>>>> an >>>>>> `__init__` method. >>>>>> >>>>>> >>>>>> On Tuesday, May 10, 2016 at 2:53:22 AM UTC-4, Ján Adamčák wrote: >>>>>>> >>>>>>> Hello guys, >>>>>>> >>>>>>> Thank you for your comments, though we were more optimistic... >>>>>>> >>>>>>> >>>>>>> Dňa piatok, 6. mája 2016 16:27:28 UTC+2 Ján Adamčák napísal(-a): >>>>>>>> >>>>>>>> Sorry, my fault. >>>>>>>> >>>>>>>> During last week I created build_sysimg2.jl from julia 0.4.5 >>>>>>>> build_sysimg.jl and when I run it, at line 86 (build_sysimg2.jl) >>>>>>>> >>>>>>>> run(`$julia -C $cpu_target --output-o sysimg_all.o --sysimage >>>>>>>> $sysimg_path.$(Libdl.dlext) --startup-file=no --compile=all --eval >>>>>>>> nothing`) >>>>>>>> >>>>>>>> I got this error: >>>>>>>> >>>>>>>> fatal: error thrown and no exception handler available. >>>>>>>> ErrorException("Task cannot be serialized") >>>>>>>> jl_unprotect_stack at >>>>>>>> C:\Users\Adam\AppData\Local\Julia-0.4.5\bin\libjulia.dll (unknown line) >>>>>>>> jl_throw at >>>>>>>> C:\Users\Adam\AppData\Local\Julia-0.4.5\bin\libjulia.dll (unknown line) >>>>>>>> jl_error at >>>>>>>> C:\Users\Adam\AppData\Local\Julia-0.4.5\bin\libjulia.dll (unknown line) >>>>>>>> jl_compress_ast at >>>>>>>> C:\Users\Adam\AppData\Local\Julia-0.4.5\bin\libjulia.dll (unknown line) >>>>>>>> jl_compress_ast at >>>>>>>> C:\Users\Adam\AppData\Local\Julia-0.4.5\bin\libjulia.dll (unknown line) >>>>>>>> jl_compress_ast at >>>>>>>> C:\Users\Adam\AppData\Local\Julia-0.4.5\bin\libjulia.dll (unknown line) >>>>>>>> jl_compress_ast at >>>>>>>> C:\Users\Adam\AppData\Local\Julia-0.4.5\bin\libjulia.dll (unknown line) >>>>>>>> jl_compress_ast at >>>>>>>> C:\Users\Adam\AppData\Local\Julia-0.4.5\bin\libjulia.dll (unknown line) >>>>>>>> jl_compress_ast at >>>>>>>> C:\Users\Adam\AppData\Local\Julia-0.4.5\bin\libjulia.dll (unknown line) >>>>>>>> jl_compress_ast at >>>>>>>> C:\Users\Adam\AppData\Local\Julia-0.4.5\bin\libjulia.dll (unknown line) >>>>>>>> jl_compress_ast at >>>>>>>> C:\Users\Adam\AppData\Local\Julia-0.4.5\bin\libjulia.dll (unknown line) >>>>>>>> jl_compress_ast at >>>>>>>> C:\Users\Adam\AppData\Local\Julia-0.4.5\bin\libjulia.dll (unknown line) >>>>>>>> jl_compress_ast at >>>>>>>> C:\Users\Adam\AppData\Local\Julia-0.4.5\bin\libjulia.dll (unknown line) >>>>>>>> jl_compress_ast at >>>>>>>> C:\Users\Adam\AppData\Local\Julia-0.4.5\bin\libjulia.dll (unknown line) >>>>>>>> jl_compress_ast at >>>>>>>> C:\Users\Adam\AppData\Local\Julia-0.4.5\bin\libjulia.dll (unknown line) >>>>>>>> jl_compress_ast at >>>>>>>> C:\Users\Adam\AppData\Local\Julia-0.4.5\bin\libjulia.dll (unknown line) >>>>>>>> jl_compress_ast at >>>>>>>> C:\Users\Adam\AppData\Local\Julia-0.4.5\bin\libjulia.dll (unknown line) >>>>>>>> jl_compress_ast at >>>>>>>> C:\Users\Adam\AppData\Local\Julia-0.4.5\bin\libjulia.dll (unknown line) >>>>>>>> jl_compress_ast at >>>>>>>> C:\Users\Adam\AppData\Local\Julia-0.4.5\bin\libjulia.dll (unknown line) >>>>>>>> jl_compress_ast at >>>>>>>> C:\Users\Adam\AppData\Local\Julia-0.4.5\bin\libjulia.dll (unknown line) >>>>>>>> jl_compress_ast at >>>>>>>> C:\Users\Adam\AppData\Local\Julia-0.4.5\bin\libjulia.dll (unknown line) >>>>>>>> jl_compress_ast at >>>>>>>> C:\Users\Adam\AppData\Local\Julia-0.4.5\bin\libjulia.dll (unknown line) >>>>>>>> jl_compress_ast at >>>>>>>> C:\Users\Adam\AppData\Local\Julia-0.4.5\bin\libjulia.dll (unknown line) >>>>>>>> jl_compress_ast at >>>>>>>> C:\Users\Adam\AppData\Local\Julia-0.4.5\bin\libjulia.dll (unknown line) >>>>>>>> jl_compress_ast at >>>>>>>> C:\Users\Adam\AppData\Local\Julia-0.4.5\bin\libjulia.dll (unknown line) >>>>>>>> jl_compress_ast at >>>>>>>> C:\Users\Adam\AppData\Local\Julia-0.4.5\bin\libjulia.dll (unknown line) >>>>>>>> jl_compress_ast at >>>>>>>> C:\Users\Adam\AppData\Local\Julia-0.4.5\bin\libjulia.dll (unknown line) >>>>>>>> jl_compress_ast at >>>>>>>> C:\Users\Adam\AppData\Local\Julia-0.4.5\bin\libjulia.dll (unknown line) >>>>>>>> jl_compress_ast at >>>>>>>> C:\Users\Adam\AppData\Local\Julia-0.4.5\bin\libjulia.dll (unknown line) >>>>>>>> jl_compress_ast at >>>>>>>> C:\Users\Adam\AppData\Local\Julia-0.4.5\bin\libjulia.dll (unknown line) >>>>>>>> jl_save_system_image_to_stream at >>>>>>>> C:\Users\Adam\AppData\Local\Julia-0.4.5\bin\libjulia.dll (unknown line) >>>>>>>> jl_create_system_image at >>>>>>>> C:\Users\Adam\AppData\Local\Julia-0.4.5\bin\libjulia.dll (unknown line) >>>>>>>> jl_atexit_hook at >>>>>>>> C:\Users\Adam\AppData\Local\Julia-0.4.5\bin\libjulia.dll (unknown line) >>>>>>>> unknown function (ip: 00000000004028B5) >>>>>>>> unknown function (ip: 000000000040140C) >>>>>>>> unknown function (ip: 000000000040153B) >>>>>>>> BaseThreadInitThunk at C:\WINDOWS\system32\KERNEL32.DLL (unknown >>>>>>>> line) >>>>>>>> RtlUserThreadStart at C:\WINDOWS\SYSTEM32\ntdll.dll (unknown line) >>>>>>>> ERROR: LoadError: failed process: >>>>>>>> Process(`'C:\Users\Adam\AppData\Local\Julia-0.4.5\bin\julia' -C native >>>>>>>> --output-o sysimg_all.o --sysimage my_img.dll --startup-file=no >>>>>>>> --compile=all --eval nothing`, ProcessExited(1)) [1] >>>>>>>> in run at process.jl:531 >>>>>>>> while loading >>>>>>>> c:\Users\Adam\AppData\Local\Julia-0.4.5\share\julia\build_sysimg2.jl, >>>>>>>> in >>>>>>>> expression starting on line 191 >>>>>>>> >>>>>>>> Before this error, julia wrote some warnings: >>>>>>>> >>>>>>>> WARNING: could not attach metadata for @simd loop. >>>>>>>> >>>>>>>> Same error I got on Ubuntu 16.04... >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> Dňa piatok, 6. mája 2016 15:48:19 UTC+2 Jeff Bezanson napísal(-a): >>>>>>>>> >>>>>>>>> That command line in build_sysimg.jl:77 looks strange. Actually I >>>>>>>>> can't find that line anywhere; our build_sysimg and >>>>>>>>> BuildExecutable.jl >>>>>>>>> now have something slightly different. >>>>>>>>> >>>>>>>>> On Fri, May 6, 2016 at 9:25 AM, Tom Breloff <[email protected]> >>>>>>>>> wrote: >>>>>>>>> > Also, I think there's even fewer people that are experts on the >>>>>>>>> Windows >>>>>>>>> > build process. I think the community tends to be more linux/osx >>>>>>>>> focused. >>>>>>>>> > >>>>>>>>> > On Fri, May 6, 2016 at 4:08 AM, Andreas Lobinger < >>>>>>>>> [email protected]> >>>>>>>>> > wrote: >>>>>>>>> >> >>>>>>>>> >> Hello colleague, >>>>>>>>> >> >>>>>>>>> >> this topic is still seen as experimental and not that many of >>>>>>>>> julia users >>>>>>>>> >> could be considered expert on this... >>>>>>>>> >> If the recipe given (long time ago i tried to follow this on a >>>>>>>>> linux >>>>>>>>> >> installation which i general has more tooling to get shared >>>>>>>>> libraries and >>>>>>>>> >> compilation working...) doesn't work, you could raise a >>>>>>>>> concrete issue on >>>>>>>>> >> github - there you get more audience with julia internal >>>>>>>>> know-how. >>>>>>>>> >> >>>>>>>>> >> Wishing a happy day, >>>>>>>>> >> >>>>>>>>> >> Andreas >>>>>>>>> >> >>>>>>>>> >> >>>>>>>>> >> On Friday, May 6, 2016 at 8:51:47 AM UTC+2, Ján Adamčák wrote: >>>>>>>>> >>> >>>>>>>>> >>> Nobody??? >>>>>>>>> >>> >>>>>>>>> >>> Dňa pondelok, 2. mája 2016 11:30:11 UTC+2 Ján Adamčák >>>>>>>>> napísal(-a): >>>>>>>>> >>>> >>>>>>>>> >>>> >>>>>>>>> >>>> Hello, >>>>>>>>> >>>> >>>>>>>>> >>>> Trying to create an executable from Julia source, there are >>>>>>>>> questions >>>>>>>>> >>>> that raised... The process of exporting functions wasn't >>>>>>>>> successful, >>>>>>>>> >>>> function(s) was not exported to dll, and even the generated >>>>>>>>> dll cant be >>>>>>>>> >>>> loaded in c++ code. Below is the process explained in >>>>>>>>> details: >>>>>>>>> >>>> >>>>>>>>> >>>> Can anybody bring more insight, how to build a standalone >>>>>>>>> executable >>>>>>>>> >>>> from Julia source? >>>>>>>>> >>>> >>>>>>>>> > >>>>>>>>> >>>>>>>>
