Thanks @Jameson The problem with @ccallable is, I get following error(Version 0.5.0-dev+4124 (2016-05-16 22:35 UTC)):
julia> @Base.ccallable (Int64, foo(x::Int64) = x+1) ERROR: expected method definition in @ccallable in eval(::Module, ::Any) at .\boot.jl:226 Thanks Dňa streda, 18. mája 2016 18:46:31 UTC+2 Jameson napísal(-a): > > 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] > <javascript:>> 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? >>>>>>>>>> >>>> >>>>>>>>>> > >>>>>>>>>> >>>>>>>>>
