We stand with Ukraine to help keep people safe. Join us
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.3.0

Updated on Jun 02 2023

Highlights of the release
  • Stabilize new lazy vals #16614
  • Experimental Macro annotations #16392 #16454 #16534
  • Fix stability check for inline parameters #15511
  • Make fewerBraces a standard feature #16297
  • Add new front-end phase for unused entities and add support for unused imports #16157
  • Implement -Wvalue-discard warning #15975
  • Introduce boundary/break control abstraction. #16612
Other changes and fixes
Annotations
  • Support use-site meta-annotations #16445
Desugaring
  • Reuse typed prefix for applyDynamic and applyDynamicNamed #16552
  • Fix object selftype match error #16441
Erasure
  • Dealias before checking for outer references in types #16525
  • Fix generic signature for type params bounded by primitive #16442
  • Avoid EmptyScope.cloneScope crashing, eg on missing references #16314
GADTs
  • Inline GADT state restoring in TypeComparer #16564
  • Add extension/conversion to GADT selection healing #16638
  • Split out immutable GadtConstraint #16602
  • Avoid bidirectional GADT typebounds from fullBounds #15683
Incremental compilation
  • Unpickle arguments of parent constructors in Templates lazily #16688
Initialization
  • Fix #16438: Supply dummy args for erroneous parent call in init check #16448
Inline
  • Dealias in ConstantValue, for inline if cond #16652
  • Set Span for top level annotations generated in PostTyper #16378
  • Interpolate any type vars from comparing against SelectionProto #16348
  • Handle binding of beta reduced inlined lambdas #16377
  • Do not add dummy RHS to abstract inline methods #16510
  • Warn on inline given aliases with functions as RHS #16499
  • Support inline overrides in value classes #16523
Java interop
  • Represent Java annotations as interfaces so they can be extended, and disallow various misuses of them #16260
Linting
  • Fix -Wunused:import registering constructor instead of its owner (also fix false positive for enum) #16661
  • Fix #16675 : -Wunused false positive on case class generated method, due to flags used to distinguish case accessors. #16683
  • Fix #16682: CheckUnused missed some used symbols #16690
  • Fix "-Wunused: False positive on parameterless enum member" #16927
  • Register usage of symbols in non-inferred type trees in CheckUnused #16939
  • Traverse annotations instead of just registering in -Wunused #16956
  • Ignore parameter of accessors in -Wunused #16957
  • Ignore parameter of accessors in -Wunused #16957
  • Improve override detection in CheckUnused #16965
  • WUnused: Fix unused warning in synthetic symbols #17020
  • Fix WUnused with idents in derived code #17095
  • WUnused: Fix for symbols with synthetic names and unused transparent inlines #17061
  • Skip extension method params in WUnused #17178
  • Fix wunused false positive when deriving alias type #17157
  • Fix WUnused for accessible symbols that are renamed #17177
  • Fix WUnused false positive in for #17176
  • Make CheckUnused run both after Typer and Inlining #17206
  • Disable WUnused for params of non-private defs #17223
  • Wunused: Check if symbol exists before isValidMemberDef check #17316
  • Wunused: Include import selector bounds in unused checks #17323
  • Fix compiler crash in WUnused #17340
Opaque Types
  • Delay opaque alias checking until PostTyper #16644
Overloading
  • Handle context function arguments in overloading resolution #16511
Parser
  • Improve support for Unicode supplementary characters in identifiers and string interpolation (as in Scala 2) #16278
  • Require indent after colon at EOL #16466
  • Help givens return refined types #16293
Pattern Matching
  • Tweak AvoidMap's derivedSelect #16563
  • Space: Use RHS of & when refining subtypes #16573
  • Freeze constraints in a condition check of maximiseType #16526
  • Restrict syntax of typed patterns #16150
  • Test case to show that #16252 works with transparent #16262
  • Support inline unapplySeq and with leading given parameters #16358
  • Handle sealed prefixes in exh checking #16621
  • Detect irrefutable quoted patterns #16674
  • Patmat: Use less type variables in prefix inference #16827
Pickling
  • Allow case classes with up to 254 parameters #16501
  • Correctly unpickle Scala 2 private case classes in traits #16519
Polyfunctions
  • Fix #9996: Crash with function accepting polymorphic function type with singleton result #16327
Quotes
  • Remove contents of inline methods #16345
  • Fix errors in explicit type annotations in inline match cases #16257
  • Handle macro annotation suspends and crashes #16509
  • Fix macro annotations spliceOwner #16513
  • Fix HK quoted pattern type variables #16907
REPL
  • REPL: Fix crash when printing instances of value classes #16393
  • Attempt to fix completion crash #16267
  • Fix REPL shadowing bug #16389
  • Open up for extensibility #16276
  • Don't crash if completions throw #16687
Reflection
  • Fix reflect typeMembers to return all members #15033
  • Deprecate reflect Flags.Static #16568
Reporting
  • Suppress follow-on errors for erroneous import qualifiers #16658
  • Fix order in which errors are reported for assignment to val #16660
  • Fix class name in error message #16635
  • Make refined type printing more source compatible #16303
  • Add error hint on local inline def used in quotes #16572
  • Fix Text wrapping #16277
  • Fix #16680 by registering Ident not containing a symbol #16689
  • Fix the non-miniphase tree traverser #16684
  • Just warn on type ascription on a pattern #17454
Scala-JS
  • Fix #14289: Accept Ident refs to js.native in native member rhs. #16185
Scaladoc
  • Added jpath check to `ClassLi...
View older Scala updates

Information

License

Free

Size

37.8 MB

Developer’s website

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

Downloads

190

App requirements

  • Intel 64
  • Intel 32
  • Mac OS X 10.4 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
  • Comments

  • User Ratings

Help the community
There are no reviews yet, be the first to leave one
Help the community
There are no ratings yet, be the first to leave one
How would you rate Scala?
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