Front End 2021

John Fultz
Director of User Interface Technology
Wolfram Research, Inc.

(RowDefault[, (Spacer1), , (Spacer1), ])  #WolframTechConf

13.0 — Building on our foundations

New features

Updated platform support

Peek at what's coming post-13

Ground rules

I won’t answer questions during my talk

I’ll stay on after my timeslot for AMA

Front End team office hours tomorrow @ 2pm

I might skip slides for time

I'll show a QR code at the end to link to this notebook

Auto-matching delimiters

Preferences ⊳ Interface ⊳ Automatically insert matching delimiters when typing

Shipped in 12.3, probably on by default in 13

f[{x},]

Plot[Sin[x],{x,0,2π},PlotStyle->{Green}]

Auto-matching delimiters

Preferences ⊳ Interface ⊳ Automatically insert matching delimiters when typing

Shipped in 12.3, probably on by default in 13

Auto-matches the following:

CellPrint[ExpressionCell[Multicolumn[{"( )","[ ]","{ }","\" \"","<| |>","(* *)"},Spacings->5],"ItemParagraph",ShowStringCharacters->False]]

({{"( )", "{ }", "<| |>"}, {"[ ]", "\" \"", "(* *)"}})

Coding ligatures

Old method — we detected when you type a complete operator and auto-replace the characters

Problem: == vs ===; we’d like to substitute == (==) for ==, but what if you want that third equal?

Problem: matching operators; e.g., [[ doesn’t match ]]

Problem: how to determine if a ]] should collapse to ]]

New method — preserve exactly what you type, but only change the appearance

Known as a “ligature” since the appearance changes by tying characters together

AutoOperatorRenderings can configured globally

Automatically tracks part-style brackets and updates as you edit

a->b

f[[2]]

User-friendly interactive iconization

Iconize has been improved to do what you mean

Range[20]

And also not accidentally corrupt expressions

Expand[(a-b)^10]

Wolfram|Alpha Notebook Edition

Wolfram|Alpha learned how to do typeset input this year

Wolfram|Alpha Notebook Edition

Wolfram|Alpha learned how to do typeset input this year

Wolfram|Alpha notebooks also learned typeset input

CellPrint[ExpressionCell[Button[Row[{,Style["  Wolfram|Alpha Notebook",20]}],CreateNotebook["WolframAlpha",Magnification->1.5,DefaultDockedCellStyle->{"DockedCell",Magnification->1.5}]],"ItemParagraph"]]

(RowDefault[, "  Wolfram|Alpha Notebook"])

AxisObject

Finally, support for multiple axes

Graphics[{AxisObject[{"Vertical",0,{0,1}}],AxisObject[{"Vertical",0,{2,3}},{0,1}],AxisObject[{"Vertical",1,{0,3}}]},ImageSize->{400,400}]

AxisObject (continued)

Finally, support for multiple axes

Or curved axes

Graphics[{AxisObject[BSplineCurve[Table[{Cos[θ],Sin[θ]},{θ,0,π,π/16}]]]}]

AxisObject (continued)

Finally, support for multiple axes

Or curved axes (or silly curved axes!)

Graphics[{AxisObject[BSplineCurve[RandomPoint[Rectangle[{0,1}],10]]]}]

AxisObject (continued)

Finally, support for multiple axes

Or curved axes (or silly curved axes!)

Also, easier tick placement, scaling, labeling, etc.

See talks by:

James Lane, 11:30am tomorrow

MinHsuan Peng, 1pm tomorrow

Local documentation is now optional

If you want it, the documentation is now installed by a separate installer

Without local documentation, searches happen locally, but most documentation hits open a web browser

Documentation for English, Japanese, Chinese available

Local documentation (continued)

Products will automatically find version-matched documentation

E.g., 13.0 documentation will only be used by 13.0 products

You can upgrade minor releases such as 13.0.1 without upgrading documentation

We’ll have available a single download manager installer that automatically downloads and installs the product + documentation so that you don’t have to run two installers separately

Faster and smaller installs particularly for incremental updates or pre-release testing

Universal macOS apps

intel=;
arm=ImageCrop@;
icon=;
CellPrint@ExpressionCell[Graphics[{Inset[intel,{-1,1},Automatic,{1,1}],Inset[arm,{1,1},Automatic,{1.25,1.25}],Inset[icon,{0,-1},Automatic,{2.5,2.5}],Orange,Thickness[0.03],Arrowheads[{{.15,1}}],Arrow[BSplineCurve[{{-.8,.5},{-.4,.4},{-.3,0}}]],Arrow[BSplineCurve[{{.8,.5},{.4,.4},{.3,0}}]]},ImageSize->250],"Output",TextAlignment->-.3]

12.3 shipped separate installers and app bundles for Intel and Apple Silicon-based Macs

13 combines them into a single app bundle

One set of .mx files and resources for both 64-bit architectures

LibraryLink modules contain MacOSX-ARM64/ and MacOSX-x86-64/ directories

Operating system support

macOS 12 (Monterey)

Windows 11

Linux — latest versions of Ubuntu, Debian, Fedora among others

iOS 15

Upgraded rendering layers

Windows migration of GDI → DirectWrite now finally finished

iOS 3D rendering now uses Metal

Sneak peeks for after 13

Toolbar

Kernel and evaluation management

Improved message handling

Likely will be reviewed on a live stream coming soon

Sneak peeks for after 13

Toolbar

Kernel and evaluation management

Improved message handling

Likely will be reviewed on a live stream coming soon

Support for Unicode grapheme clusters

FlagEmoji[code_]:=FromCharacterCode[ToCharacterCode[code]-ToCharacterCode["A"][[1]]+16^^1f1e6]

Magnify[FlagEmoji["US"],2]

Magnify[Row[FlagEmoji[#[(EntityProperty["country code", EntityProperty["Country","CountryCode"], "EntityProperty[\"Country\", \"CountryCode\"]"])]]&/@EntityList[EntityClass["Country","SouthAmerica"]]],3]

Sneak peeks for after 13

Toolbar

Kernel and evaluation management

Improved message handling

Likely will be reviewed on a live stream coming soon

Support for Unicode grapheme clusters

FlagEmoji[code_]:=FromCharacterCode[ToCharacterCode[code]-ToCharacterCode["A"][[1]]+16^^1f1e6]

Magnify[FlagEmoji["US"],2]

Magnify[Row[FlagEmoji[#[(EntityProperty["country code", EntityProperty["Country","CountryCode"], "EntityProperty[\"Country\", \"CountryCode\"]"])]]&/@EntityList[EntityClass["Country","SouthAmerica"]]],3]

Dark mode support

Thank you!

Talk notebook here:

https://www.wolframcloud.com/obj/jfultz/Published/FrontEnd%202021.nb