diff --git a/docs/glossary.md b/docs/glossary.md index 500f095b1171d..a4bfa2a96071f 100644 --- a/docs/glossary.md +++ b/docs/glossary.md @@ -4,15 +4,39 @@ This page defines some terminology that is commonly used in Electron development ### ASAR -ASAR stands for Atom Shell Archive Format. An [asar][asar] archive is a simple +ASAR stands for Atom Shell Archive Format. An [asar] archive is a simple `tar`-like format that concatenates files into a single file. Electron can read arbitrary files from it without unpacking the whole file. -The ASAR format was created primarily to improve performance on Windows... TODO +The ASAR format was created primarily to improve performance on Windows when +reading large quantities of small files (e.g. when loading your app's JavaScript +dependency tree from `node_modules`). + +### code signing + +Code signing is a process where an app developer digitally signs their code to +ensure that it hasn't been tampered with after packaging. Both Windows and +macOS implement their own version of code signing. As a desktop app developer, +it's important that you sign your code if you plan on distributing it to the +general public. + +For more information, read the [Code Signing] tutorial. + +### context isolation + +Context isolation is a security measure in Electron that ensures that your +preload script cannot leak privileged Electron or Node.js APIs to the web +contents in your renderer process. With context isolation enabled, the +only way to expose APIs from your preload script is through the +`contextBridge` API. + +For more information, read the [Context Isolation] tutorial. + +See also: [preload script](#preload-script), [renderer process](#renderer-process) ### CRT -The C Run-time Library (CRT) is the part of the C++ Standard Library that +The C Runtime Library (CRT) is the part of the C++ Standard Library that incorporates the ISO C99 standard library. The Visual C++ libraries that implement the CRT support native code development, and both mixed native and managed code, and pure managed code for .NET development. @@ -20,8 +44,7 @@ managed code, and pure managed code for .NET development. ### DMG An Apple Disk Image is a packaging format used by macOS. DMG files are -commonly used for distributing application "installers". [electron-builder] -supports `dmg` as a build target. +commonly used for distributing application "installers". ### IME @@ -31,19 +54,15 @@ keyboards to input Chinese, Japanese, Korean and Indic characters. ### IDL -Interface description language. Write function signatures and data types in a format that can be used to generate interfaces in Java, C++, JavaScript, etc. +Interface description language. Write function signatures and data types in a +format that can be used to generate interfaces in Java, C++, JavaScript, etc. ### IPC -IPC stands for Inter-Process Communication. Electron uses IPC to send -serialized JSON messages between the [main] and [renderer] processes. - -### libchromiumcontent - -A shared library that includes the [Chromium Content module] and all its -dependencies (e.g., Blink, [V8], etc.). Also referred to as "libcc". +IPC stands for inter-process communication. Electron uses IPC to send +serialized JSON messages between the main and renderer processes. -- [github.com/electron/libchromiumcontent](https://github.com/electron/libchromiumcontent) +see also: [main process](#main-process), [renderer process](#renderer-process) ### main process @@ -68,10 +87,22 @@ MAS, see the [Mac App Store Submission Guide]. ### Mojo -An IPC system for communicating intra- or inter-process, and that's important because Chrome is keen on being able to split its work into separate processes or not, depending on memory pressures etc. +An IPC system for communicating intra- or inter-process, and that's important +because Chrome is keen on being able to split its work into separate processes +or not, depending on memory pressures etc. See https://chromium.googlesource.com/chromium/src/+/master/mojo/README.md +See also: [IPC](#ipc) + +### MSI + +On Windows, MSI packages are used by the Windows Installer +(also known as Microsoft Installer) service to install and configure +applications. + +More information can be found in [Microsoft's documentation][msi]. + ### native modules Native modules (also called [addons] in @@ -85,22 +116,33 @@ likely to use a different V8 version from the Node binary installed in your system, you have to manually specify the location of Electron’s headers when building native modules. -See also [Using Native Node Modules]. +For more information, read the [Native Node Modules] tutorial. + +### notarization -### NSIS +Notarization is a macOS-specific process where a developer can send a +code-signed app to Apple servers to get verified for malicious +components through an automated service. -Nullsoft Scriptable Install System is a script-driven Installer -authoring tool for Microsoft Windows. It is released under a combination of -free software licenses, and is a widely-used alternative to commercial -proprietary products like InstallShield. [electron-builder] supports NSIS -as a build target. +See also: [code signing](#code-signing) ### OSR -OSR (Off-screen rendering) can be used for loading heavy page in +OSR (offscreen rendering) can be used for loading heavy page in background and then displaying it after (it will be much faster). It allows you to render page without showing it on screen. +For more information, read the [Offscreen Rendering][osr] tutorial. + +### preload script + +Preload scripts contain code that executes in a renderer process +before its web contents begin loading. These scripts run within +the renderer context, but are granted more privileges by having +access to Node.js APIs. + +See also: [renderer process](#renderer-process), [context isolation](#context-isolation) + ### process A process is an instance of a computer program that is being executed. Electron @@ -120,13 +162,17 @@ The renderer process is a browser window in your app. Unlike the main process, there can be multiple of these and each is run in a separate process. They can also be hidden. -In normal browsers, web pages usually run in a sandboxed environment and are not -allowed access to native resources. Electron users, however, have the power to -use Node.js APIs in web pages allowing lower level operating system -interactions. - See also: [process](#process), [main process](#main-process) +### sandbox + +The sandbox is a security feature inherited from Chromium that restricts +your renderer processes to a limited set of permissions. + +For more information, read the [Process Sandboxing] tutorial. + +See also: [process](#process) + ### Squirrel Squirrel is an open-source framework that enables Electron apps to update @@ -174,13 +220,15 @@ embedded content. [addons]: https://nodejs.org/api/addons.html [asar]: https://github.com/electron/asar -[autoUpdater]: api/auto-updater.md -[Chromium Content module]: https://www.chromium.org/developers/content-module -[electron-builder]: https://github.com/electron-userland/electron-builder -[libchromiumcontent]: #libchromiumcontent -[Mac App Store Submission Guide]: tutorial/mac-app-store-submission-guide.md +[autoupdater]: api/auto-updater.md +[code signing]: tutorial/code-signing.md +[context isolation]: tutorial/context-isolation.md +[mac app store submission guide]: tutorial/mac-app-store-submission-guide.md [main]: #main-process +[msi]: https://docs.microsoft.com/en-us/windows/win32/msi/windows-installer-portal +[offscreen rendering]: tutorial/offscreen-rendering.md +[process sandboxing]: tutorial/sandbox.md [renderer]: #renderer-process [userland]: #userland -[Using Native Node Modules]: tutorial/using-native-node-modules.md -[V8]: #v8 +[using native node modules]: tutorial/using-native-node-modules.md +[v8]: #v8