circle icon indicating copy to clipboard operation
circle copied to clipboard

About Windows support and a windows prebuilt executable?

Open oscarbg opened this issue 4 years ago • 15 comments

Hi, just noticed on twitter your circle 100 release with graphics shader C++ support.. seems you only ship is this project buildable on Windows? i.e. has Windows support? in case yes.. better yet.. can you provide Windows prebuilt binaries (circle.exe)? thanks..

oscarbg avatar Nov 01 '20 10:11 oscarbg

@seanbaxter no pressure but any update on this?

oscarbg avatar Jan 08 '21 13:01 oscarbg

I am highly motivated to implement this, but everyone I approach at MS has ignored my request for info on the VC++ ABI. I really need Windows ABI docs.

seanbaxter avatar Jan 08 '21 14:01 seanbaxter

Hi, seeing your exciting tweets on a new HLSL DXIL backend, seems Windows support is coming soon, right? also will allow Windows binary to support existing SPIR-V backend right? thanks..

oscarbg avatar Feb 13 '21 06:02 oscarbg

I don't know. The main reason I'm doing the DXIL backend is to make a presentation to the D3D people so they can work on getting me the MSVC++ ABI material, which I need for the Windows build. It's a long circuitous route. I've asked them last month but heard nothing back about it. I think I need to go the extra mile and demonstrate that there is a lot to gain by having Circle target Windows. It's all about getting info on the ABI.

seanbaxter avatar Feb 13 '21 06:02 seanbaxter

thanks for clarifying.. just curious if examining source code of projects like wine (https://github.com/wine-mirror/wine/tree/master/dlls/msvcp90) or clang (https://clang.llvm.org/docs/MSVCCompatibility.html): "First, Clang attempts to be ABI-compatible, meaning that Clang-compiled code should be able to link against MSVC-compiled code successfully. However, C++ ABIs are particularly large and complicated, and Clang’s support for MSVC’s C++ ABI is a work in progress." can't help with getting required info on MSVC++ ABI.. strange any other open source project hasn't previously explored and "decrypted" this info..

oscarbg avatar Feb 13 '21 07:02 oscarbg

Wine doesn't implement this stuff, although Clang does. But the Clang source is very very hairy in this area. Trying to reverse engineer what Clang does would be error prone and take a ton of time. MS could make things much much easier by releasing their own docs.

seanbaxter avatar Feb 13 '21 07:02 seanbaxter

It is possible the internal docs at MS are worse than what is in the Clang source code. It may explain why they are not getting back to you. Another explanation is that the MS compiler team, wishes for no more competition to invalidate their own efforts.

We just switched from Visual Studio to entire Clang toolchain, halving the release binary size, tripling execution speed and gaining support for the latest C++20 standards.

Circle's killer feature is modern C++ to SPIR-V for mainstream graphics and compute shaders, which the entire industry's talent, including Khronos, has not achieved yet. The alternatives like OpenCL are dwindling, and even Blender's Cycles is going CUDA only. AMD and Intel will be your friends, while Nvidia/Cuda likely your foe. Windows support is paramount for media production tools and games.

BukeBeyond avatar Apr 26 '21 07:04 BukeBeyond

Why not try to reach in the zig programming language conmunity ? They are also using LLVM for codegen and have achieved windows compatibility AFAIK. Zig also features meta-programability, so collaboration beetween the two teams could lead to amazing things ! Do you really think MS will be interested in your work ? They already have a closed source compiler, and it might not be great for them to have a new ground-breaking challenger on their own platform. Your work clearly put to shame MSVC Devs. Thanks for your work anyway, it really shows that a better c++ is possible ! https://github.com/ziglang/zig

cppmadguy avatar Dec 05 '21 16:12 cppmadguy

Zig didn't implement the Windows C++ ABI. The problem is about linking against existing Windows C++ libraries, not just getting a standalone binary to run.

seanbaxter avatar Dec 05 '21 17:12 seanbaxter

  1. A standalone executable is better than nothing,
  2. If that standalone binary could be linked to the SDL .dll files compiled for mingw, we "could" cross-compile for windows on linux, witch is better than not being able to do so, and is my use case, (you might have start to notice). But it may be hard to do so, I am not a compiler expert, and I may not be on top of your priority list. Keep on the good work anyway.

cppmadguy avatar Dec 05 '21 21:12 cppmadguy

This is virtually the only reason why I can't use Circle as of right now, no matter how impressive the features are and how wonderful it looks. It's more akin to a thing of beauty to be observed, and not touched because of this. I hope some form of windows support happens someday in the not too distant future. Either way, this project is amazing :) fascinating work!! I only wish I could realistically use it for actual development.

cyleaf avatar May 24 '22 07:05 cyleaf

If I'm not entirely lost, am I right in assuming you want an implementation of a COFF linker? If so would it be possible to use lld as part of circle in the meantime? I'd definitely understand the pain of trying to reverse engineer any part of the llvm codebase if you just wanted the linker implementation to work on your structures.

I'd also definitely like to have a circle.exe and to be able to build windows executables, even if the compiler can't properly link against windows libraries. Currently I'm picking circle up through wsl, so while Windows isn't supported I'm just going to be getting a hang of linux development because I am that curious.

Andersama avatar Oct 11 '22 15:10 Andersama