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? 
>>>>>>>>>> >>>> 
>>>>>>>>>> > 
>>>>>>>>>>
>>>>>>>>>

Reply via email to