Since the beginning of the year I'm working for 3DICC. We build a collaborative distributed 3D system called Terf. For our future product line we are incorporating Nim as a strategic choice. This means the Nim project finally has some real financial backing!
We have been working on an Urho3D wrapper for Nim to base our final product on. For this we improved the C++ support of c2nim and the Nim compiler tremendously to the point where wrapping C++ directly is possible with no intermediate C layer required. This means in detail:
The wrapper can be found here: https://github.com/3dicc/Urhonimo, all open source, MIT licensed! We hope it will give both Nim and Urho3D's communities a nice boost.
Enjoy!
Hello. Congratulations to Araq, Nim and 3DICC!
As a programmer who has been working almost exclusively remotely for several years, it seems obvious to me that this type of application will see growth. I spend quite a bit of work time going back and forth between a Google Hangout chat and a Trello board. It looks like Terf can really improve that situation. And also another obvious benefit is having a richer environment, which I have always felt like 3D environments should be able to enrich productivity applications just as much as gaming.
I have a really random off the wall idea which probably must be ignored and is not quite in this topic but I am going to throw it in there anyway because I can't help myself. I have been massively impressed by a few path tracing techniques I have seen recently, especially the Brigade Engine demos on youtube. I believe if you can get one or two software engineers who really understand path tracing, and one or two hardware engineers that really understand custom ASIC design, and one or two hardware engineers that really understand cutting edge mobile chip design, you will be incredibly lucky, but also, you could create a device that (if marketed successfully) could revolutionize 3d. It would (probably) be a USB 3.0 dongle "graphics card" chip or SoC that does real-time path tracing. And what the hell, since this is a fantasy, it can incorporate some APIs and implementations to facilitate procedural generation.
Congratulations, that's great news for Nim. A corporate backer, and advances in C++ interop, wow, that just kicks things into high gear.
I'm really looking forward to 1.0 and beyond.
After seeing Goran Krampe was lyrical about Nim I am not surprised. Smalltalkers are always on the look out for a high performance procedural language for interfacing their stuff which is not as backward as C and nor awkward and convoluted as C++ ;)
Language users and developers beware. The competition likes to buy out your best talent just to deprive you of their services. :(
Congrats
@vonH2
Well, I wouldn't say Smalltalkers are always on that "lookout" you describe, but yes, in general its a correct observation. For our use case it was actually not performance that was driving us towards Nim but a much more complicated set of factors involving platform requirements, third party libraries etc etc.
Regarding "buying out your best talent" - I am not sure what that comment implies - but if you mean that Nim could be in some "danger" by us hiring Andreas to be able to work on and with Nim full time instead of only in his spare time... well, that makes no sense. We are sticking out our neck and are betting on Nim here, why would we then simultaneously want it to fail?!
As for our background in Smalltalk, I think that may be a good thing. We bring a different perspective to the table with for example, a strong focus on the development environment. We are spoiled by Smalltalk and want Nim to step up to that challenge.
Geez thats like one of the best news i have seen this year so far! It will put some serious weight behind nim. Congrats!
All those cool c++ wrapping stuffs mentioned - does it mean we can have nim implement (pure) virtual c++ class methods?
does it mean we can have nim implement (pure) virtual c++ class methods?
He, that is indeed the last missing piece and if you look at the character demo that is exactly the area where we still had to use .emit. But yes, virtual methods overrides for C++ are coming.
@gokr Hi, all. Please help. I could not compile huge.nim with nim. I got error the following.
clang++ -c -I../modules -I../Urho3D-1.32/Source/Engine -I../Urho3D-1.32/Source/Engine/Audio -I../Urho3D-1.32/Source/Engine/Container -I../Urho3D-1.32/Source/Engine/Core -I../Urho3D-1.32/Source/Engine/Engine -I../Urho3D-1.32/Source/Engine/Graphics -I../Urho3D-1.32/Source/Engine/Graphics/OpenGL -I../Urho3D-1.32/Source/Engine/Input -I../Urho3D-1.32/Source/Engine/IO -I../Urho3D-1.32/Source/Engine/LuaScript -I../Urho3D-1.32/Source/Engine/Math -I../Urho3D-1.32/Source/Engine/Navigation -I../Urho3D-1.32/Source/Engine/Network -I../Urho3D-1.32/Source/Engine/Physics -I../Urho3D-1.32/Source/Engine/Resource -I../Urho3D-1.32/Source/Engine/Scene -I../Urho3D-1.32/Source/Engine/Script -I../Urho3D-1.32/Source/Engine/UI -I../Urho3D-1.32/Source/Engine/Urho2D -I../Urho3D-1.32/Source/ThirdParty/SDL/include -I../Urho3D-1.32/Source/ThirdParty/AngelScript/include -I../Urho3D-1.32/Source/ThirdParty/kNet/include -I../Urho3D-1.32/Source/ThirdParty/Bullet/src -I../Urho3D-1.32/Source/ThirdParty/Box2D -I../Urho3D-1.32/Build/Engine -D URHO3D_SSE -D URHO3D_MINIDUMPS -D URHO3D_FILEWATCHER -D URHO3D_PROFILING -D URHO3D_LOGGING -D URHO3D_ANGELSCRIPT -D URHO3D_NAVIGATION -D URHO3D_NETWORK -D URHO3D_PHYSICS -D URHO3D_URHO2D -D URHO3D_STATIC_DEFINE -D _CRT_SECURE_NO_WARNINGS -D HAVE_STDINT_H -D CMAKE_INTDIR='Debug' -D URHO3D_OPENGL -w -I/home/foxtwo/Nim/lib -o /home/foxtwo/Urhonimo/examples/nimcache/huge.o /home/foxtwo/Urhonimo/examples/nimcache/huge.cpp
1 error generated. Error: execution of an external program failed ******@*******:~/Urhonimo/examples$ nim -v Nim Compiler Version 0.10.3 (2015-02-11) [Linux: amd64] Copyright (c) 2006-2015 by Andreas Rumpf
Do I have to What? I could compile under Windows7 with VCC 2013.
Error: execution of an external program failed
$ git clone -b devel git://github.com/Araq/Nim.git $ cd Nim $ git clone -b devel git://github.com/nim-lang/csources $ cd csources && sh build.sh $ cd .. $ bin/nim c koch $ ./koch boot -d:release cc = gcc g++ -c -I../modules -I../Urho3D-1.32/Source/Engine -I../Urho3D-1.32/Source/Engine/Audio -I../Urho3D-1.32/Source/Engine/Container -I../Urho3D-1.32/Source/Engine/Core -I../Urho3D-1.32/Source/Engine/Engine -I../Urho3D-1.32/Source/Engine/Graphics -I../Urho3D-1.32/Source/Engine/Graphics/OpenGL -I../Urho3D-1.32/Source/Engine/Input -I../Urho3D-1.32/Source/Engine/IO -I../Urho3D-1.32/Source/Engine/LuaScript -I../Urho3D-1.32/Source/Engine/Math -I../Urho3D-1.32/Source/Engine/Navigation -I../Urho3D-1.32/Source/Engine/Network -I../Urho3D-1.32/Source/Engine/Physics -I../Urho3D-1.32/Source/Engine/Resource -I../Urho3D-1.32/Source/Engine/Scene -I../Urho3D-1.32/Source/Engine/Script -I../Urho3D-1.32/Source/Engine/UI -I../Urho3D-1.32/Source/Engine/Urho2D -I../Urho3D-1.32/Source/ThirdParty/SDL/include -I../Urho3D-1.32/Source/ThirdParty/AngelScript/include -I../Urho3D-1.32/Source/ThirdParty/kNet/include -I../Urho3D-1.32/Source/ThirdParty/Bullet/src -I../Urho3D-1.32/Source/ThirdParty/Box2D -I../Urho3D-1.32/Build/Engine -D URHO3D_SSE -D URHO3D_MINIDUMPS -D URHO3D_FILEWATCHER -D URHO3D_PROFILING -D URHO3D_LOGGING -D URHO3D_ANGELSCRIPT -D URHO3D_NAVIGATION -D URHO3D_NETWORK -D URHO3D_PHYSICS -D URHO3D_URHO2D -D URHO3D_STATIC_DEFINE -D _CRT_SECURE_NO_WARNINGS -D HAVE_STDINT_H -D CMAKE_INTDIR='Debug' -D URHO3D_OPENGL -w -I/home/foxtwo/Nim/lib -o /home/foxtwo/Urhonimo/examples/nimcache/urhowrap.o /home/foxtwo/Urhonimo/modules/urhowrap.cpp [Linking] Hint: operation successful (22556 lines compiled; 7.212 sec total; 37.379MB) [SuccessX] foxtwo@foxtwo-lambda:~/Urhonimo/examples$ nim -v Nim Compiler Version 0.10.3 (2015-03-02) [Linux: amd64] Copyright (c) 2006-2015 by Andreas Rumpf active boot switches: -d:release Thank you Solved! I am not sure. but Previous Nim could not (0.10.3)