digitalmars.D.announce - Calypso progress report (+ updated MingW64 build)
- Elie Morisse (43/43) Oct 21 2015 It's been a while since the last update, so here's a quick one
- Andrei Alexandrescu (3/5) Oct 21 2015 Great news! What's the story on exceptions? Does Calypso allow D code to...
- Elie Morisse (16/22) Oct 21 2015 Hi Andrei,
- Elie Morisse (19/21) Nov 15 2015 Small update: the LDC 0.16.1 merge was done and it's now possible
- Andrei Alexandrescu (10/28) Nov 16 2015 That's great progress. Do you have documentation for how things work?
- Elie Morisse (8/20) Nov 21 2015 Finally there:
- deadalnix (3/11) Nov 22 2015 I'd be very interested by the LLVM IR that this spout out. Also,
- Elie Morisse (13/15) Nov 23 2015 Here's the IR for
- deadalnix (4/19) Nov 23 2015 Yeah that's what I wanted to look int he IR. Where is
- Elie Morisse (3/6) Nov 24 2015 Sorry I got a little heavy handed, here's the full IR:
- deadalnix (2/8) Nov 24 2015 <3 <3 <3 <3
- deadalnix (5/15) Nov 24 2015 I can't find the runtime that goes with this. My best guess was
- Elie Morisse (7/11) Nov 25 2015 In case you haven't found already, the rest of the changes lies
- Joakim (5/7) Oct 21 2015 You should write a blog post explaining what you have done so far
- jmh530 (2/10) Oct 22 2015 Second.
- Suliman (2/3) Oct 21 2015 Does it's mean, that Calypso can be work as plugin for Clang?
- Szymon Gatner (2/12) Oct 22 2015 Wow, this is fantastic. What about Windows and iOS support?
- Szymon Gatner (2/19) Oct 22 2015 By Windows I meant Win32/x86
- Kai Nacke (6/27) Oct 22 2015 Win32/x86 is on the todo-list for the LDC release. I assume that
- Elie Morisse (18/20) Oct 22 2015 As a LDC plugin, so that LDC doesn't depend on Clang.
- jmh530 (3/8) Oct 22 2015 You might find this informative as well, if you were not aware:
- Kagamin (5/11) Oct 22 2015 Cool, is that a value type QString? Really? Then functions in Qt5
- Elie Morisse (23/27) Oct 22 2015 Not sure if I already announced it here but one major change a
- Kagamin (10/11) Oct 23 2015 Including class fields?
- Elie Morisse (4/16) Oct 25 2015 That triggered my own assert, oops. It's fixed now, the field
- Stefan (12/12) Oct 25 2015 Hello,
- Elie Morisse (5/18) Oct 25 2015 Hi and thank you for testing!
- Elie Morisse (2/15) Oct 25 2015 It's fixed with the latest commit.
- Laeeth Isharc (10/31) Oct 25 2015 any chance of some release builds on github when the time is
- Elie Morisse (8/18) Oct 25 2015 Hi Laeeth,
- Russel Winder via Digitalmars-d-announce (26/30) Oct 26 2015 [=E2=80=A6]
- bachmeier (5/11) Oct 26 2015 It's not difficult to embed R inside D. I will finish a
- Laeeth Isharc (13/13) Oct 26 2015 Elie - thanks for posting the build. Have been working on
- jmh530 (2/6) Oct 27 2015 This sounds cool. I look forward to it.
It's been a while since the last update, so here's a quick one before making the jump to LDC 0.16. Kelly added a more complex Qt5 demo, I recently added an Ogre3D one: https://www.youtube.com/watch?v=eryhDOa9MV0 https://github.com/Syniurge/Calypso/blob/master/tests/calypso/ogre3d/demo.d Ogre3D is a much more "sophisticated" creature than Qt5, relies on some Boost libraries, so Calypso had to reach quite another level to support it. As a reminder Calypso (https://github.com/Syniurge/Calypso) is an experimental LDC fork which lets you use C/C++ libraries without having to write bindings. Its main additions: • Maps C++ functions, global variables, structs, classes, unions, enums, typedefs, templates • C++ class and function template instantiation (including global variables inside class templates with their proper initialization in the global ctor) • C++ class creation with the correct calls to ctors (destruction is still disabled) • Virtual function calls • Static casts between C++ base and derived classes (incl. multiple inheritance offsets) • D classes inheriting from C++ classes, including the correct vtable generation for the C++ part of the class (except for MSVC which has a different ABI) • Debug info generation for any C++ symbol instantiated by D code The roadmap is: merge upstream LDC 0.16 into Calypso → C++ exception support → better C++11 support → MSVC support → extend magicport2 to convert Calypso to D (and Calypso could "bootstrap" itself to avoid writing bindings to Clang) → make Calypso an optional shared library On Linux Calypso should be in a state usable enough to start a project assuming the lack of C++ exceptions or class destruction isn't a blocker to start it (but I'm looking into the latter right now), it has held up quite well while expanding the Ogre and Qt5 demos, and my own project based on Qt5 and OpenCV. So far only Kelly Wilson has been testing Calypso with various libs and expanded the test cases (most of the libstdc++ samples are his), so more testing would be very helpful. Updated MingW build: http://www.homo-nebulus.fr/dlang/Calypso-Mingw64-i686-4.9.3-posix-dwarf-rt_v4-rev1.tar.xz
Oct 21 2015
On 10/21/2015 07:40 PM, Elie Morisse wrote:It's been a while since the last update, so here's a quick one before making the jump to LDC 0.16.Great news! What's the story on exceptions? Does Calypso allow D code to catch exceptions thrown from C++ code? -- Andrei
Oct 21 2015
On Thursday, 22 October 2015 at 01:19:19 UTC, Andrei Alexandrescu wrote:On 10/21/2015 07:40 PM, Elie Morisse wrote:Hi Andrei, Not yet but I've looked into it, the plan is to add: catch (C++) (...) { } statements and make Clang translate them into C++ landing pads (as for imports the parser will query the language plugins when encountering two pairs of (), so the C++-specific statement will be part of Calypso, not DMD). Then add a "C++ exception class" handler in LDC's personality function: https://github.com/ldc-developers/druntime/blob/ldc/src/ldc/eh/libunwind.d#L327 Easier said that done but Clang should make the std::type_info matching doable. So it's on the roadmap just after the merge of LDC 0.16.It's been a while since the last update, so here's a quick one before making the jump to LDC 0.16.Great news! What's the story on exceptions? Does Calypso allow D code to catch exceptions thrown from C++ code? -- Andrei
Oct 21 2015
On Thursday, 22 October 2015 at 01:19:19 UTC, Andrei Alexandrescu wrote:Great news! What's the story on exceptions? Does Calypso allow D code to catch exceptions thrown from C++ code? -- AndreiSmall update: the LDC 0.16.1 merge was done and it's now possible to catch about any C++ exception with catch (C++) (..) {..} statements. https://github.com/Syniurge/Calypso/blob/master/tests/calypso/eh/std_exception.d Output: Throwing an ooops exception Catching the ooops, e.what() == Ooops! Throwing another ooops exception Catching the std::exception, e.what() == Ooops! Now throwing a float Catching the float, f == 20.160000! What's left to implement for full C++ EH support: - catching class/struct by value (it's already possible to catch thrown class values by reference though) - thrown object lifetime - rethrowing
Nov 15 2015
On 11/15/2015 02:32 PM, Elie Morisse wrote:On Thursday, 22 October 2015 at 01:19:19 UTC, Andrei Alexandrescu wrote:That's great progress. Do you have documentation for how things work? For example, what's the lifetime of the pointer people will get from std::exception::what(). IMHO: don't worry about catching exceptions by value; it's almost always either incorrect, uninteresting, or both. The prize is catching (references to) classes rooted in std::exception. Nice-to-have is catching (references to) classes rooted in other C++ classes. A blog post would be fantastic. AndreiGreat news! What's the story on exceptions? Does Calypso allow D code to catch exceptions thrown from C++ code? -- AndreiSmall update: the LDC 0.16.1 merge was done and it's now possible to catch about any C++ exception with catch (C++) (..) {..} statements. https://github.com/Syniurge/Calypso/blob/master/tests/calypso/eh/std_exception.d Output: Throwing an ooops exception Catching the ooops, e.what() == Ooops! Throwing another ooops exception Catching the std::exception, e.what() == Ooops! Now throwing a float Catching the float, f == 20.160000! What's left to implement for full C++ EH support: - catching class/struct by value (it's already possible to catch thrown class values by reference though) - thrown object lifetime - rethrowing
Nov 16 2015
On Monday, 16 November 2015 at 19:35:58 UTC, Andrei Alexandrescu wrote:That's great progress. Do you have documentation for how things work? For example, what's the lifetime of the pointer people will get from std::exception::what(). IMHO: don't worry about catching exceptions by value; it's almost always either incorrect, uninteresting, or both. The prize is catching (references to) classes rooted in std::exception. Nice-to-have is catching (references to) classes rooted in other C++ classes. A blog post would be fantastic. AndreiFinally there: https://syniurgeblog.wordpress.com/2015/11/20/catching-cpp-exceptions-in-d/ Although a little late and probably less user-oriented than you wanted?For example, what's the lifetime of the pointer people will get from std::exception::what().The exception object gets destroyed on exiting the catch (C++) block if the exception isn't rethrown.
Nov 21 2015
On Saturday, 21 November 2015 at 17:28:12 UTC, Elie Morisse wrote:Finally there: https://syniurgeblog.wordpress.com/2015/11/20/catching-cpp-exceptions-in-d/ Although a little late and probably less user-oriented than you wanted?I'd be very interested by the LLVM IR that this spout out. Also, good work, pulling that one is hard.For example, what's the lifetime of the pointer people will get from std::exception::what().The exception object gets destroyed on exiting the catch (C++) block if the exception isn't rethrown.
Nov 22 2015
On Monday, 23 November 2015 at 00:04:44 UTC, deadalnix wrote:I'd be very interested by the LLVM IR that this spout out.Here's the IR for https://github.com/Syniurge/Calypso/blob/master/tests/calyps /eh/std_exception.d : https://paste.kde.org/pjxrqjjhpAlso, good work, pulling that one is hard.It wasn't that hard to be honest, I took many shortcuts thanks to Clang and Calypso. But even without them it's doable. About the issue you mentioned in the other thread, I don't think generating std::type_info values will be too big of a hindrance for Walter. Looking at cxxabi.h the classes derived from type_info all have simple layouts so generating values at least for classes singly inheriting from std::exception should be achievable without too much sweat.
Nov 23 2015
On Monday, 23 November 2015 at 23:33:21 UTC, Elie Morisse wrote:On Monday, 23 November 2015 at 00:04:44 UTC, deadalnix wrote:Yeah that's what I wanted to look int he IR. Where is _D_ZTISt9exception7__tiwrap defined ? Looks like you trimed the output :(I'd be very interested by the LLVM IR that this spout out.Here's the IR for https://github.com/Syniurge/Calypso/blob/master/tests/calyps /eh/std_exception.d : https://paste.kde.org/pjxrqjjhpAlso, good work, pulling that one is hard.It wasn't that hard to be honest, I took many shortcuts thanks to Clang and Calypso. But even without them it's doable. About the issue you mentioned in the other thread, I don't think generating std::type_info values will be too big of a hindrance for Walter. Looking at cxxabi.h the classes derived from type_info all have simple layouts so generating values at least for classes singly inheriting from std::exception should be achievable without too much sweat.
Nov 23 2015
On Tuesday, 24 November 2015 at 06:44:31 UTC, deadalnix wrote:Yeah that's what I wanted to look int he IR. Where is _D_ZTISt9exception7__tiwrap defined ? Looks like you trimed the output :(Sorry I got a little heavy handed, here's the full IR: https://paste.kde.org/piivojs0s
Nov 24 2015
On Tuesday, 24 November 2015 at 22:51:40 UTC, Elie Morisse wrote:On Tuesday, 24 November 2015 at 06:44:31 UTC, deadalnix wrote:<3 <3 <3 <3Yeah that's what I wanted to look int he IR. Where is _D_ZTISt9exception7__tiwrap defined ? Looks like you trimed the output :(Sorry I got a little heavy handed, here's the full IR: https://paste.kde.org/piivojs0s
Nov 24 2015
On Wednesday, 25 November 2015 at 01:04:19 UTC, deadalnix wrote:On Tuesday, 24 November 2015 at 22:51:40 UTC, Elie Morisse wrote:I can't find the runtime that goes with this. My best guess was here: https://github.com/Syniurge/druntime/blob/release-0.16.1/src/ldc/eh/common.d But it doesn't check the source language. Can I get some pointers ?On Tuesday, 24 November 2015 at 06:44:31 UTC, deadalnix wrote:<3 <3 <3 <3Yeah that's what I wanted to look int he IR. Where is _D_ZTISt9exception7__tiwrap defined ? Looks like you trimed the output :(Sorry I got a little heavy handed, here's the full IR: https://paste.kde.org/piivojs0s
Nov 24 2015
On Wednesday, 25 November 2015 at 06:57:14 UTC, deadalnix wrote:I can't find the runtime that goes with this. My best guess was here: https://github.com/Syniurge/druntime/blob/release-0.16.1/src/ldc/eh/common.d But it doesn't check the source language. Can I get some pointers ?In case you haven't found already, the rest of the changes lies next door in libunwind.d. Then if you're after the differences from vanilla LDC you could ctrl+f for // CALYPSO comments (I've made a habit of tagging all the departures from vanilla code with these), or you could browse the diff from the single commit: https://github.com/Syniurge/druntime/commit/d33d8bf32c739bf9a30705dfc764718c817f16b1#diff-da783b0dc7ec2a5b78b6c4479a320d08
Nov 25 2015
On Wednesday, 21 October 2015 at 23:40:15 UTC, Elie Morisse wrote:It's been a while since the last update, so here's a quick one before making the jump to LDC 0.16.You should write a blog post explaining what you have done so far and what remains to be done, then submit it to the usual link sites. I bet a lot of people would be interested in reading about this approach.
Oct 21 2015
On Thursday, 22 October 2015 at 03:14:39 UTC, Joakim wrote:On Wednesday, 21 October 2015 at 23:40:15 UTC, Elie Morisse wrote:Second.It's been a while since the last update, so here's a quick one before making the jump to LDC 0.16.You should write a blog post explaining what you have done so far and what remains to be done, then submit it to the usual link sites. I bet a lot of people would be interested in reading about this approach.
Oct 22 2015
On Wednesday, 21 October 2015 at 23:40:15 UTC, Elie Morisse wrote:make Calypso an optional shared libraryDoes it's mean, that Calypso can be work as plugin for Clang?
Oct 21 2015
On Wednesday, 21 October 2015 at 23:40:15 UTC, Elie Morisse wrote:It's been a while since the last update, so here's a quick one before making the jump to LDC 0.16. Kelly added a more complex Qt5 demo, I recently added an Ogre3D one: https://www.youtube.com/watch?v=eryhDOa9MV0 https://github.com/Syniurge/Calypso/blob/master/tests/calypso/ogre3d/demo.d Ogre3D is a much more "sophisticated" creature than Qt5, relies on some Boost libraries, so Calypso had to reach quite another level to support it.Wow, this is fantastic. What about Windows and iOS support?
Oct 22 2015
On Thursday, 22 October 2015 at 15:22:16 UTC, Szymon Gatner wrote:On Wednesday, 21 October 2015 at 23:40:15 UTC, Elie Morisse wrote:By Windows I meant Win32/x86It's been a while since the last update, so here's a quick one before making the jump to LDC 0.16. Kelly added a more complex Qt5 demo, I recently added an Ogre3D one: https://www.youtube.com/watch?v=eryhDOa9MV0 https://github.com/Syniurge/Calypso/blob/master/tests/calypso/ogre3d/demo.d Ogre3D is a much more "sophisticated" creature than Qt5, relies on some Boost libraries, so Calypso had to reach quite another level to support it.Wow, this is fantastic. What about Windows and iOS support?
Oct 22 2015
On Thursday, 22 October 2015 at 15:23:34 UTC, Szymon Gatner wrote:On Thursday, 22 October 2015 at 15:22:16 UTC, Szymon Gatner wrote:Win32/x86 is on the todo-list for the LDC release. I assume that once merged Calypso will support Win32/x86, too. (There is still work to do on x86 exception support in LLVM.) Regards, KaiOn Wednesday, 21 October 2015 at 23:40:15 UTC, Elie Morisse wrote:By Windows I meant Win32/x86It's been a while since the last update, so here's a quick one before making the jump to LDC 0.16. Kelly added a more complex Qt5 demo, I recently added an Ogre3D one: https://www.youtube.com/watch?v=eryhDOa9MV0 https://github.com/Syniurge/Calypso/blob/master/tests/calypso/ogre3d/demo.d Ogre3D is a much more "sophisticated" creature than Qt5, relies on some Boost libraries, so Calypso had to reach quite another level to support it.Wow, this is fantastic. What about Windows and iOS support?
Oct 22 2015
On Thursday, 22 October 2015 at 06:28:06 UTC, Suliman wrote:Does it's mean, that Calypso can be work as plugin for Clang?As a LDC plugin, so that LDC doesn't depend on Clang. On Thursday, 22 October 2015 at 15:22:16 UTC, Szymon Gatner wrote:Wow, this is fantastic. What about Windows and iOS support?MSVC hasn't been tested since 5 months ago. Calypso built by MSVC compiles basic examples but last time we tried none of the C++ standard lib test cases worked. Maybe it's better now that the template support is more robust but I've postponed work on MSVC until LDC 0.16 which includes the Win64 work by kinke. The MingW x86 build works better and compiles most libstdc++ samples but hasn't been tested much either. I'll come back to MSVC after improving the C++11 support, because one Achilles' heel of Calypso is currently whenever template argument deduction is involved and both MSVC's standard lib and C++11-enabled GNU libstdc++ makes heavy usage of template argument deduction. It's because Calypso relies on a hack that doesn't handle every case yet, although the situation has improved a lot and it works well enough to handle some Boost libraries.
Oct 22 2015
On Thursday, 22 October 2015 at 23:23:50 UTC, Elie Morisse wrote:MSVC hasn't been tested since 5 months ago. Calypso built by MSVC compiles basic examples but last time we tried none of the C++ standard lib test cases worked. Maybe it's better now that the template support is more robust but I've postponed work on MSVC until LDC 0.16 which includes the Win64 work by kinke.You might find this informative as well, if you were not aware: http://www.theregister.co.uk/2015/10/21/microsoft_promises_clang_for_windows_in_november_visual_c_update/
Oct 22 2015
On Wednesday, 21 October 2015 at 23:40:15 UTC, Elie Morisse wrote:On Linux Calypso should be in a state usable enough to start a project assuming the lack of C++ exceptions or class destruction isn't a blocker to start it (but I'm looking into the latter right now), it has held up quite well while expanding the Ogre and Qt5 demos, and my own project based on Qt5 and OpenCV.Cool, is that a value type QString? Really? Then functions in Qt5 demo should accept QString by ref to better match C++. Are copy constructors and assignment operator invoked? As I see default constructors are not invoked yet?
Oct 22 2015
On Thursday, 22 October 2015 at 18:02:08 UTC, Kagamin wrote:Cool, is that a value type QString? Really? Then functions in Qt5 demo should accept QString by ref to better match C++.Not sure if I already announced it here but one major change a few months ago is that all C++ classes are now value types, it made things a lot saner. I think the reason why Kelly didn't use ref was to be able to write loadFile(QString("myFilename")) instead of: auto s_myFilename = QString("myFilename"); loadFile(s_myFilename); // only takes lvalues Add me to the people who'd really love D to get through this once and for all btw :)Are copy constructors and assignment operator invoked? As I see default constructors are not invoked yet?Default constructors are invoked, and I should have added another line to the list of main features: • Maps C++ overloaded operators to D operators when an equivalent exists (and others are mapped to normal functions named e.g __opUnaryArrow for operator->) Since D doesn't support non-member overloaded operators those aren't usable as in C++, I need to work on a solution for this (there's already some groundwork actually, non-member operators that take for example a std::basic_string left operand are mapped as part of the std.basic_string module). Currently copy constructors aren't invoked when calling functions with class/struct byval arguments, arguments are memcpy'd. This is another important missing feature I should implement asap.
Oct 22 2015
On Thursday, 22 October 2015 at 23:24:57 UTC, Elie Morisse wrote:Default constructors are invokedIncluding class fields? class A { QString s_myFilename; this() { //is s_myFilename constructed already? } }
Oct 23 2015
On Friday, 23 October 2015 at 09:19:44 UTC, Kagamin wrote:On Thursday, 22 October 2015 at 23:24:57 UTC, Elie Morisse wrote:That triggered my own assert, oops. It's fixed now, the field default ctor is called if the field has no initializer, just before A's ctor.Default constructors are invokedIncluding class fields? class A { QString s_myFilename; this() { //is s_myFilename constructed already? } }
Oct 25 2015
Hello, // compile with: ldc2 -cpp-args -std=gnu++11 main.d modmap (C++) "cmath"; import (C++) std._; import std.stdio; int main() { writeln(sin(cast(float)0.8159)); return 0; } gives a lot of "error: constexpr function never produces a constant expression" messages. Not sure this is supposed to work?
Oct 25 2015
On Sunday, 25 October 2015 at 21:42:15 UTC, Stefan wrote:Hello, // compile with: ldc2 -cpp-args -std=gnu++11 main.d modmap (C++) "cmath"; import (C++) std._; import std.stdio; int main() { writeln(sin(cast(float)0.8159)); return 0; } gives a lot of "error: constexpr function never produces a constant expression" messages. Not sure this is supposed to work?Hi and thank you for testing! The code compiles and runs with C++11 disabled, I don't know why these errors occur while generating the PCH with C++11 enabled, looking into it.
Oct 25 2015
On Sunday, 25 October 2015 at 21:42:15 UTC, Stefan wrote:Hello, // compile with: ldc2 -cpp-args -std=gnu++11 main.d modmap (C++) "cmath"; import (C++) std._; import std.stdio; int main() { writeln(sin(cast(float)0.8159)); return 0; } gives a lot of "error: constexpr function never produces a constant expression" messages. Not sure this is supposed to work?It's fixed with the latest commit.
Oct 25 2015
On Monday, 26 October 2015 at 01:39:52 UTC, Elie Morisse wrote:On Sunday, 25 October 2015 at 21:42:15 UTC, Stefan wrote:any chance of some release builds on github when the time is right? I've tried a few times, and somewhat embarrassingly each time I get a bit further, but still never made it to a usable version of ldc-calypso. I didn't want to file bug report as figure you have better things to do at this stage and it's a moving target. ldc itself I can compile fine (without your mods). I'd be interested in seeing if quantlib is usable. it's a library that's quite popular in finance world, and might open up the set of people that are interested in exploring D.Hello, // compile with: ldc2 -cpp-args -std=gnu++11 main.d modmap (C++) "cmath"; import (C++) std._; import std.stdio; int main() { writeln(sin(cast(float)0.8159)); return 0; } gives a lot of "error: constexpr function never produces a constant expression" messages. Not sure this is supposed to work?It's fixed with the latest commit.
Oct 25 2015
On Monday, 26 October 2015 at 01:52:37 UTC, Laeeth Isharc wrote:any chance of some release builds on github when the time is right? I've tried a few times, and somewhat embarrassingly each time I get a bit further, but still never made it to a usable version of ldc-calypso. I didn't want to file bug report as figure you have better things to do at this stage and it's a moving target. ldc itself I can compile fine (without your mods). I'd be interested in seeing if quantlib is usable. it's a library that's quite popular in finance world, and might open up the set of people that are interested in exploring D.Hi Laeeth, Were you trying to build it on Linux? I uploaded a Linux build: http://www.homo-nebulus.fr/dlang/Calypso-x86_64-Ubuntu15_04-2015_10_25.tar.xz The build process got much simpler 2 weeks ago though, now that it doesn't depend on an LLVM source tree and an external Clang executable anymore it's almost identical to building LDC. Let me know how Calypso fares with quantlib.
Oct 25 2015
On Mon, 2015-10-26 at 02:54 +0000, Elie Morisse via Digitalmars-d- announce wrote:=20[=E2=80=A6]The build process got much simpler 2 weeks ago though, now that=20 it doesn't depend on an LLVM source tree and an external Clang=20 executable anymore it's almost identical to building LDC.In which case I will start trying to build it and use it. If D code can access C++ as well as C libraries without masses of adapter building, the case for D get very much stronger. An obviously interesting case is whether: a. GtkD can make use of the features. b. Whether we can create a Qt system more easily than any of the current methods. The backdrop to this follows on from the point Laeeth made about quantlib. Being able to do the calculations is one thing, but visualizing the data and results is where the real hook is. Hence it is Matplotlib that is the real USP of the Python/NumPy/SciPy/Pandas/IPython/Jupyter stack. Also the plotting in R, Matlab, Mathematica. --=20 Russel. =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D Dr Russel Winder t: +44 20 7585 2200 voip: sip:russel.winder ekiga.n= et 41 Buckmaster Road m: +44 7770 465 077 xmpp: russel winder.org.uk London SW11 1EN, UK w: www.russel.org.uk skype: russel_winder
Oct 26 2015
On Monday, 26 October 2015 at 07:49:02 UTC, Russel Winder wrote:The backdrop to this follows on from the point Laeeth made about quantlib. Being able to do the calculations is one thing, but visualizing the data and results is where the real hook is. Hence it is Matplotlib that is the real USP of the Python/NumPy/SciPy/Pandas/IPython/Jupyter stack. Also the plotting in R, Matlab, Mathematica.It's not difficult to embed R inside D. I will finish a forecasting project in early November, and will be able to finish it up after that. That will bring R's full plotting capabilities to D.
Oct 26 2015
Elie - thanks for posting the build. Have been working on something else past day, but this is on my list to look at next. Having quantlib work would be very nice for many financial users. Lots of people use it, even just as a check on their own stuff. Russell, I agree about the plotting, although the stuff I do for now is very simple as regards generating the image. (I just need a bit of interactivity). Speaking about charting today, someone mentioned that there are two cultures - science esp physics where purity is valued and pretty stuff is seen as not serious, and rest of world where people are only human and quite like the pretty stuff. Bachmeier - great to hear about R. looking forward to it. Laeeth
Oct 26 2015
On Monday, 26 October 2015 at 23:39:19 UTC, bachmeier wrote:It's not difficult to embed R inside D. I will finish a forecasting project in early November, and will be able to finish it up after that. That will bring R's full plotting capabilities to D.This sounds cool. I look forward to it.
Oct 27 2015
On Tuesday, 27 October 2015 at 15:23:34 UTC, jmh530 wrote:On Monday, 26 October 2015 at 23:39:19 UTC, bachmeier wrote:I've already written dmdinline to go in the other direction. I can reuse the underlying code I wrote for that for the interoperability, so all I have to do is create a C interface to RInside. Actually, that's what I did when I started using D, but I'll have to dig up my old code and polish it to the point that I'd be willing to share it.It's not difficult to embed R inside D. I will finish a forecasting project in early November, and will be able to finish it up after that. That will bring R's full plotting capabilities to D.This sounds cool. I look forward to it.
Oct 27 2015
On Tuesday, 27 October 2015 at 15:33:04 UTC, bachmeier wrote:I've already written dmdinline to go in the other direction. I can reuse the underlying code I wrote for that for the interoperability, so all I have to do is create a C interface to RInside. Actually, that's what I did when I started using D, but I'll have to dig up my old code and polish it to the point that I'd be willing to share it.Hmm, I wasn't familiar with RInside (and it's several years old at this point). Dirk Eddelbuettel does some cool stuff. In general, I don't really have any sense of how people even get started on projects like this. I appreciate it though.
Oct 27 2015