We stand with Ukraine to help keep people safe. Join us
Scala
Scala
0.0
0.0
Free
Absolutely Free

Scala overview

Scala combines object-oriented and functional programming in one concise, high-level language. Scala's static types help avoid bugs in complex applications, and its JVM and JavaScript runtimes let you build high-performance systems with easy access to huge ecosystems of libraries.

Seamless java interop

Scala runs on the JVM, so Java and Scala stacks can be freely mixed for totally seamless integration.

Type inference

So the type system doesn’t feel so static. Don’t work for the type system. Let the type system work for you!

Concurrency & distribution

Use data-parallel operations on collections, use actors for concurrency and distribution, or futures for asynchronous programming.

Traits

Combine the flexibility of Java-style interfaces with the power of classes. Think principled multiple-inheritance.

Pattern matching

Think "switch" on steroids. Match against class hierarchies, sequences, and more.

Higher-order functions

Functions are first-class objects. Compose them with guaranteed type safety. Use them anywhere, pass them to anything.

What’s new in version 3.2.0

Updated on Sep 02 2022

Highlights of the release:
  • Add runtime.TupleMirror to avoid anonymous classes for mirrors of tuples #15404
  • Fix TupleXXL.productPrefix #15411
  • Synthesize mirrors for small generic tuples #15250
  • Fix #14150: Constrain refinements to type parameters #15014
  • Gradual warning for deprecated nonlocal return #15303
  • Restrict mirrors of any union type #15279
  • Stabilize 3.2 APIs #15197
  • Add error reporting for mirror synthesis #15164
  • Fix #14432: Check if scala 2 case class is accessible #15008
  • Fix #12919: Summon anonymous mirror when companion is a case object #14986
  • Erase Int | Nothing signatures types into Int #14971
  • Allow exports in extension clauses #14497
  • Fix Scala Wart about implicit () class parameters #14840
  • Re-architecture quote pickling #12540
  • Add scala.annotation.MainAnnotation #14558
  • Add in initial support for code coverage #13880
  • Support tuple specialisation #15060
  • Remove support for -scala-output-version flag #15146
  • Make lazy vals and object native image friendly #14780
  • Allow return in tailrec position #14067
Other changes and fixes:
Backend:
  • Keep annotation order #15063
  • Update asm to 9.3 #14926
  • Fix #14773: Reuse the param slots for the tailrec local mutable vars. #14865
  • Better error messages in case of TooLarge* exceptions in GenBCode #14943
Coverage:
  • Fix relativizing paths in coverage serializer #15240
  • Fix lifting of arguments with -coverage-out #15530
  • Avoid instrumentation of inline and erased definitions #15504
  • Keep fun and args together when instrumenting TypeApply for coverage #15739
Erasure:
  • Handle & and | types when computing tuple arity #15330
  • Fix two problems related to match types as array elements #15625
Experimentals:
  • Fix check experimental inline references #15147
Exports:
  • Refine criterion when to skip identifiers in pattern constructors #15367
  • Simplify and harden duplicates checking in exports #14879
  • Fix isAbsType prediction in TreeUnpickler #14861
F-bounds:
  • Recursion brake for joins in TypeComparer #14880
GADTs:
  • Heal pattern-bound type by gathering constraints #15095
  • Consider GADT upper bounds when upcasting the scrutinee type #15351
  • Extract wildcard GADT constraints more directly #14832
  • Fix constraining against HKTypeLambda arguments #15688
IDE Support:
  • Docs: Add a comment to pathTo mentioning that it might return errorTermTree #15420
  • Fix completions to properly contain public fields if they were shadowed #15236
  • Add proper signatureHelp for unapply methods #15203
  • Fix signatureHelp to show enclosing apply instead of closest one. #15119
  • Fix implicit conversion type resolve in completions #15061
  • Fix type alias completion, unify completion tests style #15047
  • Support code completion for refined types #15283
  • Fix SourceFile.column method. #15209
Initialization:
  • Check method arguments with parametricity when static #14916
  • Add safe-init test to prevent adding cold elements to hot arrays #14895
  • Allow non-hot values in SeqLiterals #14794
Inline:
  • Make private inline accessors final #15324
  • Fix inlining when outer select is needed from inline call prefix #15327
  • Support inline methods calling private inline methods on this #15075
  • Types with only an abstract inline method are not SAMs #14874
  • Don't issue unreachable error messages for inlined code #14871
  • Dealias arg type to detect opaque types #15074
  • Fix dependency status calculation for refined type aliases in method result types #15390
  • Fix computation of class nesting level in inliner #15671
  • Always expand inline accessor names #15619
Java Compatibility:
  • Java generic signatures can't refer to type members #15093
  • Simplify and correctify calculation of the InnerClass attribute #15153
  • Fix #13523: Survive missing Java inner annotation classfiles #15094
Match Types:
  • Implement provablyDisjoint for refined types and type aliases #15375
  • Cache skolem types #14909
  • Refine Matchtype checking #15423
Nullability:
  • Speed up .nn #15418
  • Fix handling imports in TreeUnpickler #15137
  • Honor language imports when unpickling #14962
  • Remove special eq/ne in unsafeNulls #15186
  • Add eq/ne extension for AnyRef|Null to Scala3RunTime #14632
Parser:
  • Fix parser error for type arguments with trailing comma #15395
  • Change fewerbraces to always use a colon, even before lambdas #15273
  • Deprecate 3.1-migration, err on import #14978
  • Treat all incomplete ifs as statements #14960
  • Clarify and test rules for newline suppression #14877
  • Tweak assertion in withMods #14857
  • Fix loop in parser #15421
  • Parse unary operators as regular identifiers when backquoted #15198
  • Harden erasure of TermRefs #15658
Pattern Matching:
  • Preserve modifiers when desugaring for-comps #15403
  • Extract unapply types like typedUnApply #15254
  • Force Java enum children to be queried #15109
  • Enable stricter pattern binding warnings by default #14294
  • Irrefutable for generators don't require withFilter under -source:future #15593
  • Refutable extractor may be an Apply tree #15651
Pickling:
  • Survive unpickling crashes when completing from Tasty #14884
Quotes:
  • Transform RHS of captured assignment reference #15247
  • Properly look for inline methods #15072
  • Fix hash code of ExprImpl and TypeImpl #15281
  • Compute correct argument type in ExprMap #15269
  • Detect quoted pattern variables in alternatives #15073
  • Disallow old uses of quoted and spliced types #15012
  • Fix capturing conditions of HOAS quote patterns #14822
Reflection:
  • Add missing cases in SourceCode printer #15032
  • Add reflect AppliedType constructor #14923
  • Add regression test #14924
Reporting:
  • Case class must have at least one leading non-implicit parameter list #15382
  • Improve opaque type with no RHS error message #15285
  • Refine condition when to report errors in an inserted apply #15016
  • Accept soft modifiers separated by blank lines #14959
  • Fix warning with leaking this into Scala2 synthetic apply #15307
  • Refine error messages for early promotion #15263
  • Standardize -rewrite advertisements and suppress them in REPL #14955
  • Improve diagnostic for refutable extractors in pattern bindings #14988
  • Fix: correction to ClassTooLargeException message #14974
Scaladoc:
  • Fix rendering ThisType #15440
  • Add extension suffixes and fqName to scaladoc searchbar #15048
  • Fix implicit members resolution #15021
  • Fix windows paths handling in legacy external link provider #15023
  • Warn about special characters in filenames according to the default Jekyll rules #14657
  • Scaladoc annotations rework #15361
  • Fix expanding docstrings in Scaladoc #15045
Scripting:
  • Fix #13760: Running script compiled jar no longer restricted to java.base module #15103
SemanticDB:
  • Do not register SymbolOccurrence for non-symbol endmarker #15143
Standard Library:
  • Implement new main annotation #14841
  • Add compiletime.ops.string.CharAt #14431
  • Make EmptyTuple a case object #14972
  • Deprecate ToString type which should be deprecated at 3.2.0 #15645
Tasty Inspector:
  • Handle this prefix in classes (in quote patterns) #14800
  • Fix parameter untupling #14816
Tooling:
  • Add -Vprofile option #15406
  • Fix rewrite for type-ascribed refutable pattern binding #15314
  • Fix rewrites for refutable pattern bindings #14954
Transform:
  • Also hoist lifted arguments in super calls #14919
  • Add deprecated overriding checks #15432
  • Don't cast to a value class as self type #14885
  • Disallow @targetName on top-level class, trait, and object #15068
  • Handle case where abstract overrides miss an implementation #14893
  • Treat RecTypes as potentially uncheckable #14894
  • Allow multiple wildcard vals #14906
  • Handle non-specialized functions in EtaReduce #15498
Typeclass Derivation:
  • Support intersection types in mirrorCompanionRef #15192
  • Fix #15222: Recursively check for product ctor accessibility #15231
  • Fix 14025: Restrict curried type lambdas in mirror generation #15006
  • Make anonymous mirrors serializable #15391
  • Support Mirror synthesis for local and inner classes #15847
Typer:
  • Fix #15405: Dealias Or type constituents when finding its dominator #15416
  • Handle unconstrained TypeVars when synthesizing ClassTags #15376
  • Allow for unqualified apply as context functions #15417
  • Prevent crash when reporting an error #15320
  • Show a match type trace for "not a class type" errors #15218
  • Don't constrain type variables in normalize #15223
  • Eta expand CFTs in super accessors if needed #15092
  • Reject structural applications of polymorphic methods #15090
  • Hande clashes between same-named exports #14967
  • Fix outer reference detection in class parents #14961
  • Avoid redundant type test for irrefutable @unchecked patterns #14898
  • Detect clashes involving renamed exports #14831
  • Guard against stackoverflows when instantiating HK-Lambdas #14851
  • Don't try conversions or extensions on Java companion objects #14881
  • Revert #14452 and make compile-time operations on stable arguments stable #15268
  • Better handling of type parameters in constructor pattern #15356
  • Handle AvoidMap recursions #15393
  • Add missing condition in checking synthetic apply #15362
  • Harden type assignment of lambda trees #14887
  • Disallow package names as types #14888
  • Fix constToLiteral #14853
  • Survive TypeErrors in isMatchedBy #15675
  • Don't ignore expected types of New #15679
  • Better infos for dependent class parameter references #15667
View older Scala updates

Information

License

Free

Size

35.9 MB

Developer’s website

https://www.scala-lang.org/

Downloads

102

App requirements

  • Intel 64
  • Intel 32
  • Mac OS X 10.4.0 or later
Try our new feature and write a detailed review about Scala. All reviews will be posted soon.
Write your thoughts in our old-fashioned comment
MacUpdate Comment Policy. We strongly recommend leaving comments, however comments with abusive words, bullying, personal attacks of any type will be moderated.
0.0
(0 Reviews of )
There are no reviews yet
Help the community
There are no reviews yet, be the first to leave one
Free
Absolutely Free
How would you rate Scala?
Similar apps
Python
Object-oriented programming language.
Is this app is similar to Python? Vote to improve the quality of this list.
Vote results
1
Upvotes
1
Total score
0
Downvotes
Logtalk
Object-oriented logic programming language.
Is this app is similar to Logtalk? Vote to improve the quality of this list.
Vote results
1
Upvotes
1
Total score
0
Downvotes
Agena
Procedural programming language.
Is this app is similar to Agena? Vote to improve the quality of this list.
Vote results
1
Upvotes
1
Total score
0
Downvotes