no cruft: no build systems, no null, no exception handling, no ORMs, no OOP, no inheritence hierarchies, no async/await, no compilation, no dev environments, no dependency hell, no packaging, no git, no github, no devops: no yaml, no config files, no docker, no containers, no kubernetes, no ci/cd pipelines, no terraform, no orchestrating, no infrastructure: no sql, no nosql, no connection poolers, no sharding, no indexes, no servers, no serverless, no networking, no load balancers, no 200 cloud services, no kafka, no memcached, no unix, no OSes
Darklang puts everything in one box, so you can build CLIs and cloud apps with no bullshit, just code.
️️️Also it's a really enjoyable language to use!
// Record type Url = { scheme : HttpScheme domain : String port : UInt16 path : String query : Option<String> } // Enum (aka Variant, Sum Type, or Abstract Data Types) type UrlError = | InvalidScheme(String) | EmptyDomain | InvalidPort(Int64) | Unparseable(msg:String, context:String) // Aliases are just shorthands type UrlParseResult = Result<Url, UrlError>
$ darklang @paul.fizzbuzz 10 1 2 Fizz 4 Buzz Fizz 7 8 Fizz Buzz
$ darklang @hacker.stealThings "Hi there" > @hacker.stealThings requires the following permissions > Makes Http requests to unknown domains > Reads any file > Executes any file > Continue? [N, y] y > These are unusual permissions. Are you sure [N, y] y Ha ha, you're own3d $ darklang @mycompany.internal.createMonthlyReport > @mycompany.internal.createMonthlyReport requires the following > permissions > Makes Http GET requests to stripe.com/api/ETC > Makes Http POST requests to drive.google.com > Continue? [N, y] y Report initiated and stored at https://drive.google.com/u/asj599b3/5288942sdfsdf3.pdf
When you make an async request, it first waits for any arguments that are async, and starts when they're done. If another function call needs to use the result, it will wait for it before starting.
Since darklang values are immutable, there won't be any race conditions from this.
-
REPLACE ME
REPLACE ME
REPLACE MEREPLACE ME
REPLACE ME
See exampleREPLACE ME
REPLACE ME
REPLACE ME