CppCast - Rider for Unreal Engine

Episode Date: May 28, 2020

Rob and Jason are joined by Anastasia Kazakova. They first discuss news from Herb Sutter that the November ISO meeting has been postponed and a new Visual Studio preview release. Then they talk to Ana...stasia Kazakova from JetBrains about Rider for Unreal Engine and other updates to CLion and ReSharper for C++ as well as information about the C++ ecosystem. News MAME Emulation Project VS 2019 16.7 Preview 1 New York ISO C++ meeting is postponed Visual Leak Detector Links Rider for Unreal Engine Blog posts with FAQ and some details on Rider for UE CLion turns 5, birthday tale from Phil Nash CLion Makefiles prototype JetBrains turned 20, main news Sponsors Use code JetBrainsForCppCast during checkout at JetBrains.com for a 25% discount

Transcript
Discussion (0)
Starting point is 00:00:00 Thank you. C++, a smart extension from Visual Studio. Exclusively for CppCast, JetBrains is offering a 25% discount on yearly individual licenses on both of these C++ tools, which applies to new purchases and renewals alike. Use the coupon code JETBRAINS for CppCast during checkout at JetBrains.com to take advantage of this deal. In this episode, we discuss some Visual Studio update and ISO news. Then we talk to Anastasia Kozakova from JetBrains. Anastasia talks to us about a new IDE for Unreal++ developers by C++ developers. I'm your host, Rob Irving, joined by my co-host, Jason Turner.
Starting point is 00:01:40 Jason, how are you doing today? I'm all right, Rob. How are you doing? Doing okay. Just another day, man. As one of my friends recently put it, it's the 78th of March right now. Yeah, that's a good way to describe it. I can't believe that we're almost in June already. The past two months have felt long, but they've also kind of gone by rather quick yeah yeah time almost june tomorrow's my anniversary 20 years well happy anniversary to you and jen thank you all right well at the top of our episode i'd like to read a piece of feedback we got this email from
Starting point is 00:02:17 punkage and i probably apologize if i messed up your name but says uh hi robin jason i'm a big fan of cpp castast and C++ Weekly. I never miss out on any of your episodes. I really liked your previous episode with Martin as he gave some perspective about catch from the maintainer's perspective. Is it possible to have an episode on emulation programming with C++? I am sure it will be an interesting episode
Starting point is 00:02:39 as Jason has already worked on a bunch of them by now. Keep up the good work. Did we? Was MAME, is that an episode we did have an epilator yes yes maims uh with um mio drug yes yes um and also i don't want people to like people seem to think oh well jason's clearly done a bunch of these things. I've written like half of an emulator. Your cousin's written a couple in various languages. In various languages, yes. But I think he's only done like one NES emulator in C++, and that was using techniques 20 years ago. So that's probably not a good example either.
Starting point is 00:03:23 I've been thinking about who I might reach out to since you shared this feedback with me, Rob. We'll see. Maybe we do another recap or rerun or something like that. Well, this the main episode, I just looked it up and that was September,
Starting point is 00:03:38 2016. So that was pretty long time ago. Yeah. I think it was right before my first CppCon. Oh, yeah. Yeah, that sounds right. That might be right. Well, definitely check that episode, Pankaj.
Starting point is 00:03:51 But, yeah, maybe we will look into doing another episode on emulators. Okay. Well, we'd love to hear your thoughts about the show. You can always reach out to us on Facebook, Twitter, or email us at feedback at cpcast.com. And don't forget to leave us a review on iTunes or subscribe on YouTube. Joining us today is Anastasia Kazakova. As a C and C++ software developer, Anastasia created real-time Unix and Linux-based systems and pushed them to production for eight years.
Starting point is 00:04:16 She worked as an intern in Microsoft Research Networking Department and launched the first 4G network in Russia, being a part of the Yoda operator team. She has a passion for networking algorithms and embedded programming and believes in good tooling. With our love for C++, she is now the product marketing manager on the JetBrains C++ tools and.NET marketing teams. Besides, Anastasia runs a C++ user group in St. Petersburg, Russia. Anastasia, welcome back to the show. Yeah, it's great to be back. What is this? I don't think I've ever heard anything about this, you working on the
Starting point is 00:04:45 first 4g network in russia yeah that was before jet brains i was working in yota they are the 4g operators in russia actually the first 4g operator in russia and i joined them exactly the time they were driving the forge in russia and we were building the whole network and I was doing the software which helps with all these concussions in the networks like users policy setting the proper channels to them and the proper policy based on various factors so we did a software system which actually triggers all the stuff so it was fun like we were really launching the first 4G network in Russia and there were so many funny stories around that when we were playing and cheating a little bit to show some demos. That was fun.
Starting point is 00:05:33 And, you know, that was a real-time system. So when you have to sometimes come to work at night to fix something crashing somewhere in the other part of the country, which, you know, is quite big, I mean, like 12 time zones. And if something crashes there during the day, you might be having a night here in St. Petersburg. But no one cares. You have to fix it. Wow.
Starting point is 00:05:56 But at least the people would like to get access to the internet, so it better come and fix. So I remember I was coming to the office and debugging some Gdb cores falling at nights fun time like you know developer fun time now i'm curious and i'm is it the same in russia like i would expect in most countries in the rural areas people rely on 4g or whatever for their uh internet access i think now yes like when started, there was just a very beginning of the 4G in Russia. Like we were the pioneers there.
Starting point is 00:06:28 So, but right now, yeah. Like I'm using 4G everywhere. I'm relying on it quite often. So yeah, I think now it's the time for 4G and 5G coming. So that time that was the very beginning. It was very interesting. Right. Yeah, I bet.
Starting point is 00:06:43 Cool. Okay. Well, An bet. Cool. Okay. Well, Anastasia, we've got a couple news articles to discuss. Feel free to comment on these, and we'll start talking more about the latest from JetBrains, okay? Sure. All right. So this first article I have is the Visual Studio 2019 16.7 preview.
Starting point is 00:07:02 And this linked article is going over everything in the new visual studio version so you know changes to xaml and wpf and dot net um there were a couple things specific to c++ and that's that they added uh debugging support for cmake projects on remote servers with gdb server and they also added address sanitizer support, which we talked about a couple of times. This is adding the support for x64, which is great because they only had x86 before, which I would imagine not many people are still using.
Starting point is 00:07:35 Yeah. And if you're like me, you're sitting here reading this and you're going like, I did not realize that it was like C sharp and XAML and C++ mixed together. I'm just like, man, that's some weird looking C++ mixed together. I'm just like, man, that's some weird-looking C++. Who has this iComparable?
Starting point is 00:07:51 It's like my brain was not working. Yeah, there's a lot of other stuff going on there which might not be relevant to many of our listeners, but some good stuff. Yeah, but I would say it's still a very impressive list. I mean, like, lots of changes, like, interesting at least to everyone. Like, I was reading for it not only from the C++ perspective,
Starting point is 00:08:09 since I'm also working with the.NET team right now. I was reading for it very carefully, I would say, in terms of.NET as well. But C++ parts, like, only two of them, but I think they both are quite significant. I mean, like, the remote experience nowadays is, like, essential for many people. So having an ability to debug on remotely
Starting point is 00:08:29 with the GDB server or whatever, you organize that is very important. And sanitizers, I mean, like Windows users are always suffering from like missing any kind of memory leaks detector or something like that. Like, because the most, like, the biggest tooling here is for Linux and for Mac, I guess, like Valgrind or address sanitizers from Google.
Starting point is 00:08:52 But the Windows are usually staying in the corner, lonely. Yeah, there's Dr. Memory that's supposed to work on Windows, but I've never actually gotten it to work, so I don't have anything to say about it. Yeah, exactly. I did a talk at CppCon where i was discussing the various profilers and sanitizers and when i mentioned the doctor memory and asked who is using it like i mean everyone knew about it but there were not so many people actually using it i don't know going on there yeah one of the other um non-ceple
Starting point is 00:09:23 changes that's listed here which i guess is kind of a general visual studio improvement is uh this playlist for tests which i thought was kind of a neat idea so if you want to just run certain unit tests based on you know the code you're actively working on you could create a playlist so it only runs those tests kind of a neat idea i could see that being potentially useful. Although I must admit at this point, because I use ReSharper, C++ and Visual Studio, I don't know what testing features come from Visual Studio and which ones come from ReSharper. I think we still have to check if we work nicely with the playlists. Yeah, that's probably a good idea yeah okay uh next thing we have is an article from
Starting point is 00:10:07 herb sutter's blog and this is a you know pretty big announcement we already know that the varna meeting that was supposed to be in what that's supposed to be four days four days yeah um that's been postponed and they are now officially postponing the november meeting which was supposed to take place in New York. And it sounds like this was not necessarily the C++ committee's decision on its own, but that the larger ISO body said no one can have any meetings. Is that right? For the rest of this year?
Starting point is 00:10:39 I think so. I think it was mentioned that U.S. national bodies agreed not to admit in person. Okay, right. So yeah, no more in-person ISO C++ meetings for the rest of this year. There is one planned for February. Hopefully that one will be able to be held in Kona. And as we talked about last week, they are trying to do a lot with their online meetings, and hopefully they can continue to make good progress that way. Yeah i just want to say from the slightly uh cynical side of me
Starting point is 00:11:09 why are we calling these meetings postponed they're canceled right that's a good question yeah or moved online but right anyhow i mean i doubt we're going to have twice as many ISO meetings in 2021 if things open up. Yeah. Like every other month they're going to be flying to another country? Yeah, I don't think so. They already do that anyhow between conferences and meetings. Yeah, that's a good point. Maybe if you do twice more work at one, you can count it as two.
Starting point is 00:11:44 Right. Or have twice as many people there and count it as two meetings, maybe. Yeah, maybe. Well, I'm still planning to go to Kona, whether or not there's a standards meeting there in February. I'm just saying that. Hopefully everything's somewhat back to normal by then. Hopefully. Yeah. Hopefully.
Starting point is 00:12:06 Okay. And then this last article is Visual Leak Detector, which as you'll see from this article, it hasn't been updated in a couple years. But it was built against or last tested against Visual C++ 2015. But I've actually been using it a little bit myself the past few days, and it seems to work fine with my project using Visual Studio 2019, and it's pretty handy for finding memory leaks
Starting point is 00:12:35 with Visual C++, I think. Well, since you're the one who's using it right now, Rob, why don't you give us an overview of what it's like to use this tool? You're basically just including a header, and you need to modify your include and library paths to include the lib file that comes with the tool. So it's like one of these things that hooks into Mellick or something,
Starting point is 00:12:59 so it knows what was... Yeah, I believe so. And then you basically just run your app. Your app will run a bit slower and then shut it down and you get a huge or maybe hopefully not huge log in your output window telling you all leaks including you know source and file and line number of where it detected that the object was allocated that wasn't leaked.
Starting point is 00:13:27 So pretty handy. So you've had success with it this last week or so? Yeah. Cool. Okay. So Anastasia, you have a couple new things to announce, right? Do you want to start off by telling us about Rider for Unreal Engine? Yeah, sure.
Starting point is 00:13:43 We just recently launched an early preview for the thing we call Rider for Unreal Engine? Yeah, sure. We just recently launched an early preview for the thing we call Rider for Unreal Engine. So let's start with a joke. We like doing tools for C++. We have a couple in the family, so we just decided to do another one. But jokes aside, seriously, Rider for Unreal Engine is a standalone IDE
Starting point is 00:14:04 for creating your games with Unreal Engine, an fantastic and very popular engine in the game dev world. And it brings the native C++ support, and it also integrates with Unreal Editor and brings a few features specifically for Unreal Engine developers. So there is a very short link you can use. You can go to jb.gg slash Unreal, and it will redirect you to the preview. So the preview means that the version is free for now. You have just
Starting point is 00:14:31 to sign in. There is a kind of long form, but we'd like just to know more about how you're going to use the tool and what kind of game development you do. So if you sign in, you'll immediately get a license from us, and you'll get a link to the build and you can start immediately with the tool. So for now, it's Windows only. So we plan to expand to other platforms. So we plan to be cross-platform with this. And I hope that before the first release,
Starting point is 00:14:58 we'll go to Mac and Linux, hopefully this year. So for now, it's Windows only. It now works with just a solution file. so you can open the simple solution you usually use in Visual Studio just in Rider and start with it immediately. Actually in the future we plan to support native project model, Uproject, so you don't have to even generate solution in Unreal Engine project model there. So if you go to this page like I've shared,
Starting point is 00:15:25 you can see actually the overview video, which is kind of 15 minutes, but it's a nice overview of the capabilities of the tool for now. So those who did the, or those who do the Unreal Engine development with Visual Studio and ReSharper C++ actually will find a lot of known features
Starting point is 00:15:43 because the features for Unreal Engine are actually coming from ReSharper C++ actually will find a lot of known features because the features for Unreal Engine are actually coming from a sharper C++ language engine. There is a lot of nice features for particular support for Unreal Engine like reflection macros because the Unreal Engine they're using the reflection based on macros
Starting point is 00:16:00 approach because the C++ still doesn't have a proper reflection mechanism like building. They're using the macros and these macros are actually a nightmare because before you go to Unreal Header tool and build them actually and generate the whole stuff, your idea will know
Starting point is 00:16:16 nothing about what's going on there. It will be simple text and quite often the thing I was actually disappointed with was when we started with the tool I was trying to go through some tutorials on Unreal Engine development. And I often see Visual Studio with a red code there. And when I see official tutorial from AVA Games with a red code in the IDE, like my heart breaks, I just can't see this.
Starting point is 00:16:39 And that mostly was because of the reflection there, because there's just a pure tax for the ID unless it starts doing something deeper with it, unless it starts to parse it somehow, like run the Unreal header or two, or parse it in its own manner. So we do this parsing on our side. So we parse the macros.
Starting point is 00:16:57 We understand these reflection specifiers. So we provide the completion code documentation for them. We know that this comes out of this reflection mechanism, actually. And there is this thing like remote procedure calls we also support and lots of integration that we're actually doing. So that was like a long path to the tool, but I'm really happy with what we actually showed as a public preview. And we are collaborating with the Epic Games team.
Starting point is 00:17:25 So they actually tried the tool before the public announcement. And even the Fortnite team sent us some good reviews and very good and useful feedback, actually, on what they would like to improve there. So we're really grateful to the Epic team for the collaboration, for their help. Because there's not much happening about the detailed documentation and how to integrate with the Unreal Editor, but they were really helpful, and they were helping us with some pull requests. So actually, the writer for Unreal Engine is a default. You can use it as a default editor,
Starting point is 00:17:56 starting from 4.25 Unreal Engine version. So before that, you have to install a plugin separately, which is now in the marketplace. But with 4.25, you can just start using it right away from the Unreal Editor. So it's very simple and very straightforward. So yeah, that was like a good path. Very cool. Well, I think you may have answered a couple of my first questions about just,
Starting point is 00:18:20 you know, I'm not a game developer, never touched Unreal Engine, but I was kind of curious as to why, you know, I'm not a game developer, never, never touched Unreal Engine, but I was kind of curious as to why, you know, a custom IDE might be necessary as opposed to just using, you know, Visual Studio or CLion. But it sounds like these custom reflection macros is the main reason. There is actually a kind of like long story, because like most of the people in the game dev, they're truly using the pure Visual Studio, I suppose, because the game dev is somehow occupied by the Windows ecosystem a lot. So most of the people there are on the Windows platform. And naturally, they're using Visual Studio as a default editor, which often integrates as a default editor into the engines. I mean, the Unity and Unreal Engine,
Starting point is 00:18:59 they all go with Visual Studio as a default. But as I tell you, the experience when you're using the Visual Studio might not be nice if you're not doing the general C++ parts, which are fine, but if you go to more specific Unreal Engine code, then you can do actually a lot, and you can do much better there,
Starting point is 00:19:18 I mean, in terms of the language support and the smart editor support, so all the things we try to do. And also, we would like to integrate deeper with the Unreal Editor and Visual Studio while it helps to install some things and it has some kind of integration, but it's not that deep.
Starting point is 00:19:36 So for example, in Writer for Unreal, we finally managed to have the blueprints on board. This is a binary format, actually, which stores a lot of information. And if you, for example, have some class in your C++ and you inherit this class in the blueprints, you know nothing about it
Starting point is 00:19:52 in the regular C++ editor. But in Writer for Unreal, you will see the derived classes in your blueprints and you can click and navigate to the blueprints. And also for properties, you said in your C++ code,
Starting point is 00:20:06 if you, for example, update the value in the Unreal Editor and save, the value will be updated in a special hint in the writer form real. So you will see these values in the actual editor. This is really, really helpful. And it was actually a challenging task because that's a binary format without any proper documentation, I guess. But it's interesting to us. We like this kind of things in JetBrains.
Starting point is 00:20:27 We like dealing with code in this way because we realize that there is a lot of work happening in the blueprints. The games are usually going with both blueprints and C++, and it's nice if we can help people to see what's going on in their blueprints while they're just doing their C++ editing. And I would say that people are using the Visual Studio. Quite often they're using Visual Studio with Visual Assist. They also do kind of nice work for Unreal Engine specifically. So they have some very similar features in terms of reflection support.
Starting point is 00:20:58 They don't do any kind of deep integration with Unreal Editor itself because it's just an extension for Visual Studio. You can guess, probably don't need it in Visual Studio. So we wanted actually to go forward with that. So yeah, and if we come to our tools, I mean, C-Line, like that's a very popular question after we actually launched Rider for Unreal, like why we're not doing this in C-Line
Starting point is 00:21:21 because you can guess like we do C-Line as our general purpose cross-platform C and C++ IDE, and we're targeting it as our main offer for C++ developers, and it still is. But when we come to game dev, we don't want to overload CLion with all the specifics from the game dev,
Starting point is 00:21:41 because the target audience for CLion is a lot of general cross-platform projects, it's finances, it's embedded development we're now digging deeper and like artificial intelligence, native development not only with C++ but with Rust and more. So bringing game dev there would be challenging and maybe will'll overload the tool a lot. And from the other side, we already have Rider, which you might know as a C-sharp IDE. If you've ever heard of, like, you do some C-sharp development
Starting point is 00:22:12 or heard something about it, Rider is a cross-platform C-sharp IDE. And quite a big part of its audience is Unity. And, like, Unity developers, they're coming from various game dev studios. And guess what what when we started talking to them we realized that many of them are actually doing both
Starting point is 00:22:30 Unreal Engine and Unity they're switching between the engines between the projects they're doing both and it's natural to them so not that they're focused around one engine in particular and they told us that it would be nice if they don't have to switch the IDE like working with the Unity project or working with us that it would be nice if they don't have to switch the ID.
Starting point is 00:22:46 Working with the Unity project or working with the Unreal project would be nice to have the same ID just to short the learning curve because otherwise you'll have to learn two tools. And we decided that since we've already done a lot in terms of the integration with Unity and providing
Starting point is 00:23:02 high quality Unity support and integrations there, why not just to do the same for Unreal Engine? And the only thing we needed there was actually to bring the C++ support into Rider. That's also simple because Rider is like a child of two parents, IntelliJ IDEA and ReSharper. It's IntelliJ IDEA UI and front-end, and back-end is coming from ReSharper so for the Rider so-called Rider protocol so we just plugged in the ReSharper C++ support into Rider and we got everything ready so that was kind of easy and it also actually eliminated lots of performance
Starting point is 00:23:39 problems because you know Visual Studio when we run ReSharper C++ Visual Studio, we're running into the 32-bit process of the Visual Studio. So we're still not out of process there. There is some work around it. But still, the 32-bit process for C++ is definitely not enough, especially if we're talking about a real engine, a huge engine with a huge C++ code base. So Writer actually eliminates this problem a lot
Starting point is 00:24:04 because it's a separate tool. It's like separate processes. We do everything on our own. We can control a lot of things there, how we index the things and whatever we do there. So we did a couple of performance optimizations there, like postponing the indexing for the Unreal Engine itself so that you can actually start coding your game immediately.
Starting point is 00:24:26 Just open and start it, and we'll index the engine in the background, and you can control if you would like to additionally index some plugins, whatever. So all these performance optimizations are actually working nicely, and we already got lots of feedback from our early previewers that they feel the performance difference comparing to Visual Studio, for example. I meant your Visual Studio or Visual Studio with C Sharp or C++. So that was like one of the goals. So I know virtually nothing about this game development world for modern game dev, but I thought
Starting point is 00:24:59 Unity, you could develop an either C++ or C Sharp for Unity. Is that... Unity, you could develop in either C++ or C Sharp for Unity. Is that? Unity, while you develop for Unity, you mostly do the C Sharp scripting. Unity itself is written in C++, but I don't think many people there actually contribute to Unity or doing something around it. They mostly just do the C Sharp scripting.
Starting point is 00:25:21 Moreover, when you talk to Unity game developers, they're usually not naming themselves as the C Sharp scripting. Moreover, when you talk to Unity game developers, they're usually not naming themselves as the C Sharp developers. They're usually saying that they're Unity scripting developers. So that's a completely different world for them. That's funny, actually. But yeah, so mostly it's C Sharp.
Starting point is 00:25:38 There are some scripting languages in addition to that, but it's C Sharp mostly. Unreal Engine, you do the development in C++ and also like these blueprints things and i guess there are some possibilities for like python and some other scripting languages but that that's not that popular okay i was just wondering if the the uh unity developers would also see some benefit from from this writer getting unreal support in some way because the c++ integration but it sounds like you're probably not i think they will because many of them are
Starting point is 00:26:11 not just unity developers many unity developers in the game studios are also on real engine right because like today you're doing a project on unity the next day you're doing the project like in a real engine that's quite often i mean like for sure there are studios who are focused around one engine but quite many little studios are focused around many so there's something else you said and i'm i'm pretty curious about this from the c lion and c++ development perspective you said that you're using the resharper c++ plugin in Rider for your Unreal support. Is that what you said? Okay. Yeah, like we use it as a language engine.
Starting point is 00:26:50 So we use it as a backend via the Rider protocol to provide a C++ support in Rider. That's true. I think something that we've talked about in years past when we've had you on the show is that ReSharper and CLion have different code bases so they don't have quite the same exact features. Are we going to see any of this flowing back over into CLion or the other way
Starting point is 00:27:11 now that you're like, oh, sure, it was easy. We just used the ReSharper C++ engine in IntelliJ. That's what you said. Good question, actually. It was not that easy because the writer itself was actually not ready for that because we're already using ReSharper as a backend for the main writer. So in that sense, using ReSharper C++ was kind of easy task. But we're also using actually C-Line there, I would say,
Starting point is 00:27:38 because when you do the development, you obviously need a debugger. And if you're in Visual Studio, you probably understand that you have a debugger from Visual Studio. But it's a proprietary software. You can't use it in Rider. It's prohibited. So we checked a couple of options there and did some prototypes and finally end up with the LDB-based debugger for Visual Studio C++. This is actually the same debugger we're currently also using in C-Line for Microsoft Toolchain. And it's also a debugger in Rider for Unreal Engine to debug your Unreal Engine games.
Starting point is 00:28:13 And the back end is an LDB base. So it's our own fork based on LDB. And the front end is actually coming from C-Line because we already have an integration with the LDB in C-Line. So we just cut this piece from CLine and put it into Rider. Actually, this usually makes us private reviewers
Starting point is 00:28:33 a little bit surprised when we're trying to explain them where to report the issues. Because some goes to ReSharper C++, some goes to Rider, and some actually goes to CLine, but still. So we're reusing the C-Line parts in Rider right now in terms of the debugger,
Starting point is 00:28:50 where we're reusing the debugger back in C-Line for Visual Studio C++ toolchain, and actually we do some internal experiments for using ReSharper C++ language engine via the same protocol in C-Line. And you know that in C-Line there is not only
Starting point is 00:29:06 our own Java-based, Kotlin-based language engine, but also there is a Clang-D-based language engine now. So also working for some kind of a protocol. So it's also our own fork, or the Clang-D, and we try to move as many features in the editor as possible right now to this Clang-D-based language engine. So it's capable of a lot of things right now. And so we'll see how it goes, so which works better.
Starting point is 00:29:31 So maybe we'll still need to compare how it works. I mean, ReSharper C++ vs. Clang-D-based engine, maybe we'll keep both. Maybe we'll do some enhancement in that sense. So in the future, we might get the same Unreal Engine language features supporting CLion as well. No one is limiting us from that. Technically, it's possible.
Starting point is 00:29:50 Just if we decide that that makes sense in terms of the targeting of the tool and overloading the tool with some extra functionality. But for now, we see Rider as an ultimate game dev IDE, and CLion is just the main c++ offer so and if there are benefits in turning plug-in the resharper c++ engine into c-line will definitely do that if not then then won't so that's the story okay is the c++ support in rider like completely limited to just the unreal engine development because I know I work on a mixed C Sharp and C++ project
Starting point is 00:30:28 I use Visual Studio and go between both languages often but there's some developers on my team who really only work on the C Sharp and they actually prefer Rider and I'm wondering if they could use Rider for both if they wanted to. Actually they can so the
Starting point is 00:30:44 story is that we didn't cut anything from the language engine for C++ when we plugged it into Rider. So generally, the same language features will be available. So you can just open your solution file and do some general C++ development in Rider. And that's the proper thing to try right now because you can open the solution in CLI and CLI doesn't support solution project model, Microsoft project model. But you have to realize that right now
Starting point is 00:31:10 we're focused on Rider for game dev. So we're not prioritizing the issues coming from the general C++ support. And especially in terms of the debugger because the debugger is like a big piece of it and you can guess that it's a hard work to implement a proper debugger nearly from scratch even though it's based on ldb so we handled like the unreal engine stuff there more or less nicely for the preview but there is a lot of
Starting point is 00:31:36 things that which have to be focused before it's actually usable for the journal c++ things especially the and like native visualizers for the standard library++ things, especially the native visualizers for the standard library. All these things are currently missing there. So in general, yeah, you can use it as a general C++ tool and it will work for you nicely, I guess. But there might be some issues.
Starting point is 00:31:58 So just feel free to report them. Nice. I've just been curious, like listening to you talk about how the game developers use these things. And I'm thinking in your role at JetBrains, you have at least dabbled in probably pretty much anything
Starting point is 00:32:16 that C++ developers do. Is that fair? So I'm guessing you've actually pulled up the game dev engines and have worked with them and seen what these things look like. So you know how to use all the tools at the very least. I don't know. I'm just curious, like, your experience and breadth of experience is probably wider than most people, for sure. Just as maybe not the depth necessarily on these topics, but the breadth for sure. Just curious, like if there's anything
Starting point is 00:32:45 that stands out to you, surprises you as C++ developers or something you've learned recently that you found interesting. I actually learned a lot around the game development in terms of C++ because when we started the tool,
Starting point is 00:32:59 we didn't have that many actual game developers in the team. Then we hired a few who actually helped us with many, many aspects of the game dev and after that i actually like reverted a little bit myself back and turned to some cpp con talks from the game developers from game developer companies trying to understand what they are actually doing with the c++ because before that i was not that interested in that i was mostly skipping these kind of talks. But after that, I actually spent a lot of time there digging into how do they use the language,
Starting point is 00:33:28 so how they overcome, how they deal with the reflection, because it was surprising to see that Unreal Engine, the Ruby and Popular Engine, are actually basing their reflection mechanism on macros. I was like, what the hell are you doing? Why? But I found out that there are not so many options, you know, like because some people are using Python generation,
Starting point is 00:33:49 some other things there, but you need to have reflection somehow. And like macros was probably the easiest working solution for them. And because of that, for sure, you have like lots of issues. Like there are these things called remote protocol calls, RPCs, are remote procedure calls. And in Unreal Engine, you just put some kind of reflection macro before it to show that it's actually RPC. And there are some characteristics you put as a reflection specifier,
Starting point is 00:34:19 like you put something with validation. And after that, you get a function generated with this suffix with validation. And after that, you get a function generated with this suffix with validation. And your code navigation in the editor actually have to understand that this is the same function. You have to navigate there. And the usual C++ editor doesn't know anything about it. It doesn't know that this function with this name is actually connected with this function
Starting point is 00:34:42 with the same name with some other suffix. And you have to put it to the like language engine that yeah if you see this reflection specifier this piece of text here you have to understand that you have to navigate to this function you have to refactor it properly so when you rename the original function you have to rename all this with validation functions as well so So it was so interesting to dig into this to see how it works, how the whole system is organized around that, and how they overcome actually all these issues we still have in the language, I mean, the recent reflection mechanism. Also, it was very interesting to see how they work with the memory.
Starting point is 00:35:22 I mean, like that the array is probably the best structure for all the game developers with the memory. I mean, like, that the array is probably the best structure for all the game developers in the world. I mean, like, they're usually tuning these structures on their own. I read a lot about ESTL. I mean, like, how they work with their own STL there because they can't use the regular STL libraries. So it was very interesting. I mean, when I jumped into it, I was surprised a lot, and
Starting point is 00:35:46 I learned how they try to actually optimize the language, which is already good for low latency tasks, even better for the game development. And all this, like, working with memory and reflection stuff was very, very interesting. So I think I learned a lot, and
Starting point is 00:36:02 I'm still learning a lot about them. What C++ standard did you find that the people who were responding to you are using? Most of them were saying something about C++ 11 and 14, but recently when we did the ecosystem research, we found out that C++ 17 is very popular, especially in game dev. And I guess when the reflection comes to the language, they will be upgrading as well. But the story there is complicated.
Starting point is 00:36:31 They can't just upgrade because they like the language. They have to wait for the SDK providers, for those who do the consoles, those who do the hardware and provide the SDK for them, for Xbox, for PS4, for Switch, just to update the SDKs as well well to use the new standard so it's not that easy switch for a newer language just because they want so they still have to integrate a lot of stuff into their code so and that's actually another complicated side of the whole
Starting point is 00:36:57 game dev development because that's not only about your game or even your game and their game engine it's also about a huge piece of software from those who provide the hardware right well since you just mentioned mentioned the uh ecosystem survey uh is that going to be coming out soon are there any interesting uh highlights in that new one uh yeah i can sure share a few so we're actually gonna publish it i guess somewhere in the beginning of june so uh we do it i guess since 2017 so building and some kind of an ecosystem research across all the languages and technologies uh we we do support uh since 2017 in order to understand how the ecosystem looks like because we work in this ecosystem, we are a part of this ecosystem,
Starting point is 00:37:46 we would like to understand what the things are going on there. So there is a very interesting story regarding this ecosystem research because we put lots of effort into it. We have a big team behind it and we try to limit the bias a lot. We do translate the survey into six languages and have lots of weighting and special promise in order to limit the bias from the English-speaking countries, from like United States,
Starting point is 00:38:16 who usually fill in these kind of surveys when they are in English. So we do validate the results, for example, for C++ against the Foundation survey. And it's very similar, but we see this bias coming from, for example, English-speaking people or the audience specific to C++ foundation because it's very professional there. I mean, there is a bias to those who do C++ for more than six or ten years for the foundation survey. So this year, I guess we collected 19,000 responses in the whole for the foundation survey. So this year, I guess we collected 19,000 responses in the whole for the whole ecosystem. And it's about 2K comment to C++.
Starting point is 00:38:53 So it's very similar to what C++ foundation got this year. So I already compared some numbers with them. And it's like 42% of the C++ audience are professionals and 40% are students. And there are these like, you probably know that the biggest top areas for C++ are embedded games and financial development. And we see these areas with the percents
Starting point is 00:39:16 in the ecosystem survey, in the research, in the data we got. And we even sliced by these areas for the final results. So to see some differences between the areas. So this all will be available in some kind of infographics quite soon. So we're already preparing the final landing pages and the raw data will be coming also a little bit later after the infographics will be released so that you can actually do your own slices and check the data so the interesting facts i found this year is that we regularly asked about the c++ standards and we see like uh 12 percent of the respondents answering that they're using c++ 20 already which is great great, I think. And like 41% comes to C++17,
Starting point is 00:40:07 which is also great. So I really like how the figures are changing like across the years. So for sure, we sliced this for embedded finances and games. And as I said, I was surprised because I actually saw 51% for C++17 in games area.
Starting point is 00:40:27 So it's really a lot. So it's bigger than in comparison, for example, to financial area or embedded for sure is like on C++11 and C++14 mostly. They're kind of behind in that sense. We also asked people if they plan to move to another C++ standard in the next year. And while half of the respondents, they replied that they do not plan to move, but the other half, they are planning to move. And when you're coming closer to C++ 17,
Starting point is 00:40:56 there are more people who would like to upgrade definitely to C++ 20. So it's actually good to see that many people are finally going to upgrade themselves during US standard. It's actually a good move. For sure, we do ask about the tooling. Like we're very much interested in how we're doing in terms of the tooling in the ecosystem. So there are data for like top IDs, editors. So there is like Visual Studio CLan and Visual Studio Code in the top three and we also slice this as well for embedded financial
Starting point is 00:41:29 development and games and for sure in games, obviously as I said, it's mostly the Windows stories and Visual Studio tools are very popular there, so Visual Studio is like the top popular editor with the highest percent compared to other areas. And we hope to see Rider for Unreal Engine in this list one day. We also asked about the unit testing framework.
Starting point is 00:41:55 It was actually glad to share some good news with Phil because the cache actually acquires like 14% due to our data on the second place after the Google test. And it's great because it's actually growing, I would say. It's very popular right now in the community. And it's good to see it's that high, actually. So there is also some information about the dependency managers. So we see that half of the respondents,
Starting point is 00:42:24 they don't use anything specific to manage their dependencies, and like 23% they rely on system package managers, but the others, they are trying to use some other options like NuGet or VC package or Conan. VC package and Conan are growing, and that's kind of obvious thing we were expecting, but it's still interesting to see the kind of transformation. Like the top for the project models, it stayed and changed for many years already.
Starting point is 00:42:55 It's CMake, Visual Studio Project, and Makefiles in that order. CMake actually went to the first place a couple of years ago and stays there for maybe two or three years already in a row. And again, we sliced all these questions by embedded financial and game development areas. So in the final infographics, you can actually check these slices as well. So yeah, an interesting fact that I actually noticed there,
Starting point is 00:43:21 and that's not the first year I'm noticing it, that when we asked about which tools for like guidelines or code quality you regularly use most of the people i i mean like right now it's something around 36 they say that they are using the tool provided by their id i mean nothing specifically but just the tool from their IDE, which means that we have to be responsible for what the people are using as a tooling vendor because whatever we provide, they will be using.
Starting point is 00:43:53 Otherwise, they won't use these kind of tools at all. So we're kind of responsible for the cloud quality in the ecosystem. So yeah, that's just the general overview. So we hope to release the infographics in a couple of weeks, probably. I'm not sure about the final day. It's still, because we're localizing the results.
Starting point is 00:44:13 So we're still in the, I guess, the localization step. So after it gets localized, we'll publish it and it will be available. And sometime after, we're going to publish the raw data as well. So everyone actually, it's free to're going to publish the raw data as well so everyone actually it's free to everyone so grab the raw data and do their own slice so yeah that's
Starting point is 00:44:31 very cool well are there any major features of C-Lion or ReSharper that are worth going over because it's been a while since we had you on yeah actually you know this year is actually big for us in terms of the company and C++ tools
Starting point is 00:44:47 because the company turned 20 and C-Line and ReSharper C++ turned five this year. So this April we were celebrating. Actually, we did record a very nice video for C-Line celebration. Phil Nash is actually telling some kind of a story there. And he also actually did the music for the video. So it's not only the voiceover, it's also Phil's music there.
Starting point is 00:45:12 So just go and see the video. It's really nice. I really like it. And we also did some kind of interviews with the team for Wish Arpacy++. So just trying to find out how they feel about the five years in production. And if we talk about what's going on there in terms of the features, in terms of directions for the tools, so if we take the resharp for C++, so as you know, we do the engine on our own, I mean, the language engine, so we're very much focused on C++ 20 right now, trying
Starting point is 00:45:42 to provide as much support for the language as we can. Like, I mean, something not just in the, like, parsing and highlighting the things, but trying to create some interesting code analysis checks. And, of course, the game dev, which is the major part of the ReSharper C++ right now. So for their improvements for Unreal Engine support, we just published some very initial support for HLSL.
Starting point is 00:46:09 This is the shader language, so some kind of C++-based shaders. So we did provide the HLSL support in ReSharper C++ 2020.1, and we plan to improve it further, and we plan to work on some Unity shader support as well. So this will probably come into the main writer as well and the third direction for a sharp principles plus is definitely
Starting point is 00:46:31 performance so it's still there no magic so we still have to do a lot in terms of performance there uh if we talk about the c line there are kind of more paths there so we did a lot for remote work which is kind of like, you know, trending these days, we all stay at home, we all work somehow remotely. So all the remote modes are very popular in C-Line. And we do a lot to improve the performance to general quality, add some new possibilities there and new options there. Also, we kind of started with Embedded in CLion. So we did a few things to support STM42.
Starting point is 00:47:10 We supported the platformer frameworks. So we added some compiler support for IR, for CUDA dialect, currently discussing the possibilities to add CUDA and IR debuggers to CLion to see if we can integrate them.
Starting point is 00:47:26 So there are a lot of stuff happening there in the embedded area. I think we're lacking the team members to implement all the ideas a lot. Because, you know, the area is huge and I really feel a very big passion for it because I'm myself an embedded developer and I really like what's going on there. All these peripheral views and playing with boards, all this stuff, it's really impressive. So, like, simply speaking, you can just take C-Line right now
Starting point is 00:47:54 and debug on some regular chip, like Arduino, for example, and debug on it and, like, upload some code there, like, do some interesting stuff on this board. So, also, we started the prototype for Makefiles, code there, do some interesting stuff on this board. Also, we started the prototype for Makefiles, I think a kind of top-voted feature for Ceylon for many years, but it's
Starting point is 00:48:13 a little bit harder than we heard because the Makefiles are very diverse. I mean, there are lots of things we can do with the Makefiles. So we implemented some kind of a prototype. We shared a blog post and suggested everyone to jump in for the private preview i got quite many emails i would say from people who would like to try our prototype on their own projects and they did and like half of
Starting point is 00:48:36 the experiments went okay half of them actually failed because they were using some uh like tools which are actually spoiling the compiler output and were actually reading the compiler output to understand what's going on in the project. So we're actually running some comments to understand what's going on there. So makefiles is actually one of the biggest directions for us. And also all this stuff around the Clang-D based engine.
Starting point is 00:49:03 As I said, we ported a lot of things to the ClangD. So we had the code completion running in the ClangD-only mode right now, and we're moving various code analysis checks. We just moved the data flow analysis to ClangD, and some navigation partially works for the ClangD as well. So lots of things there. And we even did some very nice experiment.
Starting point is 00:49:27 We collaborated with the offer of the concepts in Clang and we actually merged with the SARS branch before the CBPCon last year. And we pushed that to the public build of C-Line so that everyone could actually try some features built on top of the ClangD like the support from concept coming from
Starting point is 00:49:50 SAR and our own implementation of some specific features for the concepts in C-Line. So when SAR actually demoed this at CppCon so he did some nice demo of the C-Line's feature in the end of his concept talk. This was kind of experiment because the concepts at this time
Starting point is 00:50:06 were not in the Clang master. So we just merged the private branch, like not the private, but the very specific branch of concepts from SAR into our main language engine. So this is the things we can actually do. So we liked the experiments. There were some complications and some tricks there, but we like how it actually went.
Starting point is 00:50:26 So yeah, we're doing a lot of things in terms of language support here, like as you've heard, experimenting with 3Sharp C++ as well. Not sure how it goes further, but at least we'll have some experiments here as well. So yeah, these are the probably main directions for CLang right now. But we have so many things happening right now around us in the company. I'm sometimes surprised because we published this report for the company turned 20. And if you just scroll through it, you can notice so many things happening. We launched the public preview for space, which is an integrated team environment we do.
Starting point is 00:51:03 We launched our own typeface for developers called Monospace. We launched a bunch of educational initiatives and we started several new offices. So there are so many things happening in JetBrains these days. Wow. Yeah, you have offices in many countries and cities right now, don't you? Yeah, like it's, I guess, three offices in Russia, Novosibirsk, Moscow, and St. Petersburg.
Starting point is 00:51:30 The St. Petersburg one is a new one, so we just moved to a bigger office a year ago. Munich office, which is also planned to move to a new building quite soon, I guess, after all these stories with the coronavirus finishes finally. We also opened a new office in Amsterdam, which is a new office for us. And yeah, like our headquarter is still in Prague in Czech Republic. And yeah, like a couple of offices, mostly for the sales team,
Starting point is 00:51:59 but also some developers are in United States and Boston, and sales are in New Jersey and like somewhere in San Francisco, I guess. So, yeah, I guess quite many offices. I haven't been to all of them yet. Okay. Well, it's been great having you on the show again, Anastasia. Anything else you wanted to plug or anything before we let you go? No, I just would like to say thank you
Starting point is 00:52:26 for having me back. It was fun. I like it. It's actually great to share so many news around our tools. I like talking about our tools, but also I like to dig into some new things like Game Dev, and it was a great thing to share some news we have for Game Dev
Starting point is 00:52:42 and Unreal Engine stuff. Awesome. Thanks. Yeah, thanks. Thanks so much for listening in as we chat about C++. We'd love to hear what you think of the podcast. Please let us know if we're discussing the stuff you're interested in, or if you have a suggestion for a topic, we'd love to hear
Starting point is 00:52:58 about that too. You can email all your thoughts to feedback at cppcast.com. We'd also appreciate if you can like CppCast on Facebook and follow CppCast on Twitter. You can also follow me at Rob W. Irving and Jason at Lefticus on Twitter. We'd also like to thank all our patrons who help support the show through Patreon. If you'd like to support us on Patreon, you can do so at patreon.com slash cppcast. And of course, you can find all that info and the show notes on the podcast website at cppcast.com.
Starting point is 00:53:29 Theme music for this episode was provided by podcastthemes.com.

There aren't comments yet for this episode. Click on any sentence in the transcript to leave a comment.