# Thursday, 25 July 2024

Day 2 at CppNorth started with Lightning Talks! But first I had to walk to the venue. When I drive around, I'm used to a flagger making cars stop from time to time to let a construction vehicle proceed. But this was my first sidewalk flagger:

The lightning talks were terrific, as they so often are. Funny, helpful, educational, often all 3. Pier-Antoine Giguère was our high-energy MC and really shone. I don't have any pictures because I was paying attention to all the talks!

Then it was Chandler Carruth, one of my fellow Carbon leads, with How Designing Carbon with C++ Interop Taught Me About C++ Variadics and Overloads, a talk I definitely enjoyed. There was plenty of code in both languages.

The audience seemed to enjoy it, too. After lunch I went to Hiding your Implementation Details is Not So Simple by Amir Kirsh, who has a gentle teaching style I really like. Then it was Mitigating the Intellectual Anxiety Associated with Learning the C++ Programming Language by Emmanuel Danso Nyarko from CppAfrica. If you've ever worried about C++'s reputation for being "the language for smart people" this talk will show you just how real it is. The reality of what jobs are available in Africa controls what languages people will learn. With no high-paying fintech or envy-of-your-friends gamedev employers, why would someone take on something they think is incredibly difficult?

This also applies to what is in the standard library. Seasoned C++ developers with lots of community folks to talk to can figure out how to build a UI. Different projects will make different choices - use Qt or some similar C++ framework, put a not-C++ frontend on a C++ engine, or some of the other choices of various age and success. But how does someone without that community navigate those choices and get started? Why doesn't the standard library help with that in any way at all other than "console apps" with keyboard input and text output?

Then I went to see Sohaila Ali, a very poised 17 year old with years of experience in hackathons and other contests and conferences, talk about career from that youth perspective. The audience was very engaged and the conversation after the talk was lively and enlightening.

Alas, as that talk wrapped up I had to do as I mentioned in my keynote and accept my own limitations. After a very full day of interesting talks I needed to cut the input for a while so I did not see Eric Wastl's keynote. I look forward to the recording, because I heard it was good.

One more day to go!

Kate

Thursday, 25 July 2024 19:59:18 (Eastern Daylight Time, UTC-04:00)  #    
# Wednesday, 10 July 2024

Things are really starting to happen on the Carbon project. Since Chandler Carruth announced the project two years ago at CppNorth, progress on the language design, and the toolchain implementation, has been considerable. Until very recently, if you wanted to try your hand at writing a little "hello world" application, you literally had to clone or fork the repo, and then build all the toolchain and tests, and you had to install a lot of dependencies in order to do that.

Now, there are nightly releases of a tool that can compile and link Carbon code. The only dependency I needed (on a WSL Ubuntu fresh install) was clang-16. I got that like this:

wget https://apt.llvm.org/llvm.sh
chmod u+x llvm.sh
sudo ./llvm.sh 16
sudo apt install \
  clang-16 \
  libc++-16-dev  \
  libc++abi-16-dev \
  lld-16

Then I downloaded a nightly build, untar-ed it, and could compile and link Carbon code, within the limitations of what has been implemented so far.

If you haven't been paying attention, you might want to watch some conference talks. Or check out the Carbon Copy newsletter. You'll find the 3 issues that have been published in the announcements section of the repo. Issue Number 3 is the latest and includes sample code that runs the Sieve of Eratosthenes to count the number of primes under 1000. (You can edit it to try a different limit, if you like.) This shows off user defined types (with a factory function), while loops, if, and a number of other parts of the language. 

Of course, Carbon is nowhere near ready to use. The only UI it can do is to print an integer. No other types, and it can't read input. There are no strings. There's no C++ interop. A number of language features (generics, variadics, lambdas and so on) are not implemented. It is nearly ready to evaluate. If you can't wait to start evaluating, you don't have to. Just be aware you can't evaluate all of it yet. But you can start, if you would like to.

Kate


Wednesday, 10 July 2024 14:17:13 (Eastern Daylight Time, UTC-04:00)  #