> "I see a lot of C++ influence" I don't see what gave you that impression. Perhaps the syntax? But I don't think it looks more like C++ than Java or C#.
> Why would I choose to invest in your language over one of these other ones that has more momentum?
There are several reasons, but of course I am biased: 1- builtin cache invalidation 2- safe parallelism 3- predictable GC
While 2-3 can be found in other languages, I think I can argue that 1 is very unique to skip.
The other thing is, what are you trying to build? If you what you want to do is to develop an incremental tool, then Skip is probably the best option out there right now.
Let's say you decided tomorrow to build a fully incremental C++ front-end, to support auto-complete for example (I chose C++ because it is notoriously complex). What would you write this in? I think Skip should be the language of choice.
The interesting about Skip is that local mutations are explicit with a ! in front of it. And it works in the context of a lvalue.
We may want to rename this title if it's confusing.
Can you elaborate on this comment in the context of some of the other languages listed by the grandparent (Go, Swift, Julia, Nim)? Granted, writing bare-metal operating system kernels may severely limit practical options, but I can imagine using Go, Swift, and Nim for slightly higher level "systems programming". Skip would be a reasonable alternative to these, right?
It really depends what one means by "system programming". I would add Java/C# and many others to that list.
I think you've done a really good job with Skip. I really love the incremental type-checking. It's a breath of fresh air to see a compiler created with IDEs in mind from the beginning.
Effect tracking is something that Nim also boasts so I'm curious how that works in Skip. Are there any docs/articles going into detail about this?
For that reason Java and C# cannot be counted as system programming languages, because neither of those can interact directly with the system they're running on.
Ex. C# needs PInvoke, where as C can just call system functions directly.
At least that's my understanding.
How would you describe when to use Skip? It looks really interesting.
The GC and the heavy weight runtime make it unsuitable in this space.
Skip seems very similar to Swift and Java, with inspiration from Rust wrt mutability.
FWIW I don't think anyone is claiming you should, especially given it's not under active development (:
And I am looking for people to help ;-)
> The Skip project concluded in 2018 and Skip is no longer under active development at Facebook.
This makes it sound like the project was killed off entirely, as it mentions its 'concluded'.
Converting a multi-million-line codebase takes many years, and in practice, it turned out that huge swaths of the code would need to be converted before any wins were had. (To fully leverage reactivity, all your dependencies also need to be reactive.) Our codebase is intertwined and doesn't have many self-contained parts that could be fully converted in isolation so this wasn't possible.
Essentially, Skip is still very promising as a language for new projects but it feels like Facebook management couldn't justify staffing a permanent team given that we don't have a path to move huge chunks of development to it except in projects being developed more from scratch, which we tend to have few of.
I wouldn't see any of this as an indictment of Skip's potential generally.
Skip supports ergonomic asynchronous computation with async/await syntax