Find a file
Nicholas Shahan 2379cdc080 [ddc] Enforce more null safety on js interop
- Add a runtime flag to enable checks on non-nullable APIs that
  return values from non-static JavaScript interop.
- Call a new helper method at the call site when these APIs are
  detected to perform the null check.
- Add test file for the cases we can detect and enforce.

NOTE: This does not make non-static JavaScript interop sound.
This only adds more checks to enforce soundness with respect
to nullability in some cases. There are still holes that will
never be closed due to the permissive nature of this form of
JavaScript interop.

Change-Id: I2f88d1543a683fdc84d764e2b0eaafeb0ca73107
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/358581
Reviewed-by: Samuel Rawlins <srawlins@google.com>
Reviewed-by: Mayank Patke <fishythefish@google.com>
Commit-Queue: Nicholas Shahan <nshahan@google.com>
Reviewed-by: Srujan Gaddam <srujzs@google.com>
Reviewed-by: Sigmund Cherem <sigmund@google.com>
2024-04-03 23:20:15 +00:00
.dart_tool [infra] re-land work to auto-generate .dart_tool/package_config.json 2022-04-12 17:21:02 +00:00
.github Clarify risk and multiple channel CLs in cherry-pick request template. 2024-03-26 15:29:23 +00:00
benchmarks [benchmarks] Fix benchmarks warming up incorrectly. 2024-02-22 14:38:19 +00:00
build [infra] Remove Goma support. 2024-04-02 22:54:19 +00:00
docs Add requirement to fix downstream repositories 2024-03-13 14:13:49 +00:00
pkg [ddc] Enforce more null safety on js interop 2024-04-03 23:20:15 +00:00
runtime [vm/compiler] Fix redundant stores in AssemblerBase::StoreToSlot. 2024-04-03 13:14:39 +00:00
samples fix use of deprecated members in ffi samples 2024-01-31 22:31:59 +00:00
sdk [ddc] Enforce more null safety on js interop 2024-04-03 23:20:15 +00:00
tests [ddc] Enforce more null safety on js interop 2024-04-03 23:20:15 +00:00
third_party Roll zlib to 24c07df5033183efad8607cba62e746bea7180bf. 2024-03-26 19:55:45 +00:00
tools [infra] Simplify RBE startup/shutdown logic. 2024-04-03 09:28:30 +00:00
utils [ VM / DDS ] Add --print-dtd-uri flag and launch DTD from the correct snapshot for AOT 2024-03-21 19:50:46 +00:00
.clang-format
.gitattributes Fix allowing Windows newlines in sh files. 2024-03-19 11:27:14 +00:00
.gitconfig [infra] Add documentation to .gitconfig 2018-06-11 18:24:16 +00:00
.gitignore [infra] Support testing with RBE on Windows. 2024-02-29 10:33:09 +00:00
.gn [build] Switch to Fuchsia core SDK. 2023-11-10 19:23:11 +00:00
.mailmap Fixed various typos in a lot of files 2022-07-25 12:21:59 +00:00
.style.yapf Mass format python with yapf 2019-08-05 20:34:31 +00:00
AUTHORS Simplify the license situation 2022-09-14 21:06:22 +00:00
BUILD.gn [vm] Do not bundle dart.lib in the Dart SDK 2024-02-15 14:09:37 +00:00
CHANGELOG.md [docs,io] Clarify that isDirectory is not meaningful for FileSystemDeleteEvent. 2024-03-30 01:03:08 +00:00
codereview.settings [infra] Default presubmits to use python3 2021-08-24 08:20:47 +00:00
CONTRIBUTING.md Update CONTRIBUTING.md 2023-11-20 09:29:37 +00:00
DEPS [co19] Roll co19 to 74b618cc11ea65ced9e017f58893cf565b7b21b9 2024-04-03 16:03:29 +00:00
LICENSE Update LICENSE 2021-04-08 07:57:10 +00:00
OWNERS add package:_macros (SDK vendored) and package:macros (pub published) 2024-03-26 18:40:00 +00:00
PATENT_GRANT Rename patent file 2019-08-16 12:03:17 +00:00
PRESUBMIT.py [presubmit] Force read files as UTF-8 2024-03-05 14:25:09 +00:00
README.dart-sdk Update README.dart-sdk for inclusion of AOT snapshots 2023-11-21 10:33:22 +00:00
README.md Update readme content 2023-12-18 15:30:58 +00:00
sdk.code-workspace [cleanup] Remove co19_2 and other references to _2 suites 2023-11-22 11:15:57 +00:00
sdk_args.gni [gn] Add an option to specify the sdk_hash 2024-03-07 04:11:48 +00:00
sdk_packages.yaml add package:_macros (SDK vendored) and package:macros (pub published) 2024-03-26 18:40:00 +00:00
SECURITY.md Add link to published advisories 2022-02-08 19:45:07 +00:00
WATCHLISTS [analyzer] Properly close analyzer WATCHLISTS entry 2023-12-10 18:02:25 +00:00

Dart

An approachable, portable, and productive language for high-quality apps on any platform

Dart is:

  • Approachable: Develop with a strongly typed programming language that is consistent, concise, and offers modern language features like null safety and patterns.

  • Portable: Compile to ARM, x64, or RISC-V machine code for mobile, desktop, and backend. Compile to JavaScript or WebAssembly for the web.

  • Productive: Make changes iteratively: use hot reload to see the result instantly in your running app. Diagnose app issues using DevTools.

Dart's flexible compiler technology lets you run Dart code in different ways, depending on your target platform and goals:

  • Dart Native: For programs targeting devices (mobile, desktop, server, and more), Dart Native includes both a Dart VM with JIT (just-in-time) compilation and an AOT (ahead-of-time) compiler for producing machine code.

  • Dart Web: For programs targeting the web, Dart Web includes both a development time compiler (dartdevc) and a production time compiler (dart2js).

Dart platforms illustration

License & patents

Dart is free and open source.

See LICENSE and PATENT_GRANT.

Using Dart

Visit dart.dev to learn more about the language, tools, and to find codelabs.

Browse pub.dev for more packages and libraries contributed by the community and the Dart team.

Our API reference documentation is published at api.dart.dev, based on the stable release. (We also publish docs from our beta and dev channels, as well as from the primary development branch).

Building Dart

If you want to build Dart yourself, here is a guide to getting the source, preparing your machine to build the SDK, and building.

There are more documents on our wiki.

Contributing to Dart

The easiest way to contribute to Dart is to file issues.

You can also contribute patches, as described in Contributing.