Dear ITensor Developers,
I have read some comments in which ITensor users have been suggested to use the Julia version of the library, rather than the C++. Indeed, it seems that the Julia version, albeit much younger than the C++ version, is acquiring more functionalities whereas the C++ is not. I am wondering whether this means that at some point the C++ version will be abandoned.
I am asking this since I am currently working on some “long term” project using the C++ version of itensor and I’d like to understand what is the roadmap of the library.
Thanks for the question. It occurred to us when you asked it that although we have discussed our plans as developers, we haven’t made them very clear to the ITensor user community.
Our plans at this point are basically that the C++ version will continue to be supported, but in a kind of “maintenance mode” where we will not add significant new features to it. This does not mean we will never do so, it’s just that our focus will be putting new features into the Julia version first.
The reasons for this decision are basically that we find Julia to be superior language in nearly every way, for users as well as for developers. It is just as fast as C++ (and easier to perform optimizations on, so in practice can be actually faster) while being much more productive to use and develop. Additionally it has a great package manager while C++ doesn’t have a standard package manager at all.
In the past, we’ve felt that C++ was limiting the goals of ITensor quite a bit. Some of the problems we were having with C++ included:
- hard to add dependencies and help users to manage the process of installing and linking to them
- hard to split the code into several packages, so we never did it
- a lack of good libraries that we could build on top of
- users struggling to do basic things because of the complexity of the C++ language (and then us having a large support burden having to teach them aspects of C++, rather than focusing on the usage of ITensor)
- designs that we wanted to realize being difficult or impossible to do in C++, while nearly trivial to do in Julia
Regarding the idea of building a long-term project on top of C++ ITensor, on the one hand you can be sure that we will continue to make the library available, answer support questions about it, and fix any kind of major bugs affecting it. But again as mentioned above, we aren’t currently planning to add major new features to it.
Of course happy to discuss more –
Thank you for your reply, that is exactly what I needed to know. I understand C++ is not meant for rapid development, and understand your choice.