Misplaced Pages

SpiderMonkey

Article snapshot taken from Wikipedia with creative commons attribution-sharealike license. Give it a read and then ask your questions in the chat. We can research this topic together.

This is an accepted version of this page

#392607

73-567: SpiderMonkey is an open-source JavaScript and WebAssembly engine by the Mozilla Foundation . The engine powers the Firefox web browser and has used multiple generations of JavaScript just-in-time (JIT) compilers , including TraceMonkey, JägerMonkey, IonMonkey, and the current WarpMonkey. It is the first JavaScript engine , written by Brendan Eich at Netscape Communications, and later released as open source and currently maintained by

146-581: A fork for users with similar preferences, and directly submit possible improvements as pull requests . The Open Source Initiative 's (OSI) definition is recognized by several governments internationally as the standard or de facto definition. OSI uses The Open Source Definition to determine whether it considers a software license open source. The definition was based on the Debian Free Software Guidelines , written and adapted primarily by Perens . Perens did not base his writing on

219-448: A JavaScript Shell for interactive JavaScript development and for command-line invocation of JavaScript program files. Open-source software Open-source software ( OSS ) is computer software that is released under a license in which the copyright holder grants users the rights to use, study, change, and distribute the software and its source code to anyone and for any purpose. Open-source software may be developed in

292-406: A Pathways to Enable Open-Source Ecosystems (POSE) program to support open source innovation. The adoption of open-source software by industry is increasing over time. OSS is popular in several industries such as telecommunications , aerospace , healthcare , and media & entertainment due to the benefits it provides. Adoption of OSS is more likely in larger organizations and is dependent on

365-469: A browser width of 1,024 pixels. CSS is converted to inline CSS, removing responsive web design and selectors such as :hover and :active . Content generated using JavaScript during the crawling process appears in a frozen state. HTML class names are preserved inside the old-class attribute . When text is selected , a JavaScript applet generates a URL fragment seen in the browser's address bar that automatically highlights that portion of

438-541: A bug needs to be fixed in their project. This is established by communicating with the OSS community through avenues such as bug reporting and tracking or mailing lists and project pages. Next, OSS developers select or are assigned to a task and identify a solution. Because there are often many different possible routes for solutions in OSS, the best solution must be chosen with careful consideration and sometimes even peer feedback . The developer then begins to develop and commit

511-410: A centralized way. Roles are clearly defined. Roles include people dedicated to designing (the architects), people responsible for managing the project, and people responsible for implementation. Traditional software engineering follows the cathedral model. The bazaar model, however, is different. In this model, roles are not clearly defined. Some proposed characteristics of software developed using

584-427: A collaborative, public manner. Open-source software is a prominent example of open collaboration , meaning any capable user is able to participate online in development, making the number of possible contributors indefinite. The ability to examine the code facilitates public trust in the software. Open-source software development can bring in diverse perspectives beyond those of a single company. A 2024 estimate of

657-507: A copy of the license is provided to recipients with the code. One important legal precedent for open-source software was created in 2008, when the Jacobson v Katzer case enforced terms of the Artistic license , including attribution and identification of modifications. The ruling of this case cemented enforcement under copyright law when the conditions of the license were not followed. Because of

730-436: A model for developing OSS known as the bazaar model. Raymond likens the development of software by traditional methodologies to building a cathedral, with careful isolated work by individuals or small groups. He suggests that all software should be developed using the bazaar style, with differing agendas and approaches. In the traditional model of development, which he called the cathedral model, development takes place in

803-454: A new bug. Early releases : The first version of the software should be released as early as possible so as to increase one's chances of finding co-developers early. Frequent integration: Code changes should be integrated (merged into a shared code base) as often as possible so as to avoid the overhead of fixing a large number of bugs at the end of the project life cycle. Some open-source projects have nightly builds where integration

SECTION 10

#1732917679393

876-426: A process called Code Generation. The optimizations here assume that a script continues to see data similar what has been seen before. The Baseline JITs are essential to success here because they generate ICs that match observed data. If after a script is compiled with Warp, it encounters data that it is not prepared to handle it performs a bailout. The bailout mechanism reconstructs the native machine stack frame to match

949-508: A public good as it is available to everyone and does not decrease in value for others when downloaded by one person. Open source software is unique in that it becomes more valuable as it is used and contributed to, instead of diminishing the resource. This is explained by concepts such as investment in reputation and network effects . The economic model of open-source software can be explained as developers contribute work to projects, creating public benefits. Developers choose projects based on

1022-453: A result that links the previous and the following section of the list (e.g. 20 links for page). The other web pages saved are filtered, and sometimes may be found by one of their occurrences. The search feature is backed by Google CustomSearch. If it delivers no results, archive.today attempts to utilize Yandex Search . While saving a page, a list of URLs for individual page elements and their content sizes, HTTP statuses and MIME types

1095-422: A victory for OSS supporters. In open-source communities, instead of owning the software produced, the producer owns the development of the evolving software. In this way, the future of the software is open, making ownership or intellectual property difficult within OSS. Licensing and branding can prevent others from stealing it, preserving its status as a public good . Open source software can be considered

1168-404: Is a good or service, what can be considered a modification, governance through contract vs license, ownership and right of use. While there have been developments on these issues, they often lead to even more questions. The existence of these uncertainties in regulation has a negative impact on industries involved in technologies as a whole. Within the legal history of software as a whole, there

1241-417: Is able to inline other scripts and specialize code based on the data and arguments being processed. It translates the bytecode and Inline Cache data into a Mid-level Intermediate Representation (Ion MIR) representation. This graph is transformed and optimized before being lowered to a Low-level Intermediate Representation (Ion LIR). This LIR performs register allocation and then generates native machine code in

1314-539: Is absolutely another terrific way that individuals and organizations choose to contribute to open source projects. Groups like Open Collective provide a means for individuals to contribute monthly to supporting their favorite projects. Organizations like the Sovereign Tech Fund is able to contribute to millions to supporting the tools the German Government uses. The National Science Foundation established

1387-544: Is done automatically . Several versions: There should be at least two versions of the software. There should be a buggier version with more features and a more stable version with fewer features. The buggy version (also called the development version) is for users who want the immediate use of the latest features and are willing to accept the risk of using code that is not yet thoroughly tested. The users can then act as co-developers, reporting bugs and providing bug fixes. High modularization: The general structure of

1460-404: Is innovative since open-source programs are the product of collaboration among a large number of different programmers. The mix of divergent perspectives, corporate objectives, and personal goals speeds up innovation. Moreover, free software can be developed in accordance with purely technical requirements. It does not require thinking about commercial pressure that often degrades the quality of

1533-560: Is legal variety in this definition. Some jurisdictions attempt to expand or reduce this conceptualization for their own purposes. For example, The European Court of Justice defines a computer program as not including the functionality of a program, the programing language , or the format of data files. By limiting protections of the different aspects of software, the law favors an open-source approach to software use. The US especially has an open approach to software, with most open-source licenses originating there. However, this has increased

SECTION 20

#1732917679393

1606-611: Is shown. This list can only be viewed during the crawling process. One can download archived pages as a ZIP file, except pages archived since 29 November 2019, when archive.today changed their browser engine from PhantomJS to Chromium . In July 2013, Archive.today began supporting the API of the Memento Project . In March 2019, the site was blocked for six months by several internet providers in Australia and New Zealand in

1679-468: Is theoretically challenging in economic models, it is explainable as a sustainable social activity that requires resources. These resources include time, money, technology and contributions. Many developers have used technology funded by organizations such as universities and governments, though these same organizations benefit from the work done by OSS. As OSS grows, hybrid systems containing OSS and proprietary systems are becoming more common. Throughout

1752-451: The ARM , x86 , and x86-64 platforms. It has been the default engine since Firefox 18. OdinMonkey is the name of Mozilla's new optimization module for asm.js , an easily compilable subset of JavaScript. OdinMonkey itself is not a JIT compiler, it uses the current JIT compiler. It's included with Firefox from release 22. The WarpMonkey JIT replaces the former IonMonkey engine from version 83. It

1825-889: The distributed version control system (DVCS) are examples of tools, often open source, that help manage the source code files and the changes to those files for a software project in order to foster collaboration. CVCS are centralized with a central repository while DVCS are decentralized and have a local repository for every user. concurrent versions system (CVS) and later Subversion (SVN) and Git are examples of CVCS. The repositories are hosted and published on source-code-hosting facilities such as GitHub . Open-source projects use utilities such as issue trackers to organize open-source software development. Commonly used bug trackers include Bugzilla and Redmine . Tools such as mailing lists and IRC provide means of coordination and discussion of bugs among developers. Project web pages, wiki pages, roadmap lists and newsgroups allow for

1898-530: The "four freedoms" from the Free Software Foundation (FSF), which were only widely available later. Under Perens' definition, open source is a broad software license that makes source code available to the general public with relaxed or non-existent restrictions on the use and modification of the code. It is an explicit "feature" of open source that it puts very few restrictions on the use or distribution by any organization or user, in order to enable

1971-639: The ECMA-262 specification ( ECMAScript ). ECMA-357 ( ECMAScript for XML (E4X)) was dropped in early 2013. SpiderMonkey is written in C / C++ and contains an interpreter , the WarpMonkey JIT compiler , and a garbage collector . TraceMonkey was the first JIT compiler written for the JavaScript language. Initially introduced as an option in a beta release and introduced in Brendan Eich's blog on August 23, 2008,

2044-548: The FSF now flatly opposes the term "Open Source" being applied to what they refer to as "free software". Although he agrees that the two terms describe "almost the same category of software", Stallman considers equating the terms incorrect and misleading. Stallman also opposes the professed pragmatism of the Open Source Initiative , as he fears that the free software ideals of freedom and community are threatened by compromising on

2117-505: The FSF's idealistic standards for software freedom. The FSF considers free software to be a subset of open-source software, and Richard Stallman explained that DRM software, for example, can be developed as open source, despite that it does not give its users freedom (it restricts them), and thus does not qualify as free software. In his 1997 essay The Cathedral and the Bazaar , open-source influential contributor Eric S. Raymond suggests

2190-532: The Mozilla Foundation. It's design allows it to be embedded in applications beyond web browsers, with implementations including MongoDB database system, Adobe Acrobat, and the GNOME desktop environment. Eich "wrote JavaScript in ten days" in 1995, having been "recruited to Netscape with the promise of 'doing Scheme ' in the browser". (The idea of using Scheme was abandoned when "engineering management [decided] that

2263-630: The Public Interest . Within Europe some notable organizations are Free Software Foundation Europe , open-source projects EU (OSP) and OpenForum Europe (OFE). One Australian organization is Linux Australia while Asia has Open source Asia and FOSSAsia . Free and open source software for Africa (FOSSFA) and OpenAfrica are African organizations and Central and South Asia has such organizations as FLISOL and GRUP de usuarios de software libre Peru . Outside of these, many more organizations dedicated to

SpiderMonkey - Misplaced Pages Continue

2336-569: The United States has focused on national security in regard to open-source software implementation due to the perceived threat of the increase of open-source software activity in countries like China and Russia, with the Department of Defense considering multiple criteria for using OSS. These criteria include: if it comes from and is maintained by trusted sources, whether it will continue to be maintained, if there are dependencies on sub-components in

2409-473: The advancement of open-source software exist. FOSS products are generally licensed under two types of licenses: permissive licensing and copyleft licensing . Both of these types of licenses are different than proprietary licensing in that they can allow more users access to the software and allow for the creation of derivative works as specified by the terms of the specific license, as each license has its own rules. Permissive licenses allow recipients of

2482-456: The aftermath of the Christchurch mosque shootings in an attempt to limit distribution of the footage of the attack. According to GreatFire .org, archive.today has been blocked in mainland China since March 2016, archive.li since September 2017, archive.fo since July 2018, as well as archive.ph since December 2019. On 21 July 2015, the operators blocked access to

2555-402: The bazaar model should exhibit the following patterns: Users should be treated as co-developers: The users are treated like co-developers and so they should have access to the source code of the software. Furthermore, users are encouraged to submit additions to the software, code fixes for the software, bug reports , documentation, etc. Having more co-developers increases the rate at which

2628-414: The code. The code is then tested and reviewed by peers. Developers can edit and evolve their code through feedback from continuous integration . Once the leadership and community are satisfied with the whole project, it can be partially released and user instruction can be documented. If the project is ready to be released, it is frozen, with only serious bug fixes or security repairs occurring. Finally,

2701-427: The company's IT usage, operating efficiencies, and the productivity of employees. Industries are likely to use OSS due to back-office functionality, sales support, research and development, software features, quick deployment, portability across platforms and avoidance of commercial license management. Additionally, lower cost for hardware and ownership are also important benefits. Organizations that contribute to

2774-399: The compiler became part of the mainline release as part of SpiderMonkey in Firefox 3.5 , providing "performance improvements ranging between 20 and 40 times faster" than the baseline interpreter in Firefox 3 . Instead of compiling whole functions, TraceMonkey was a tracing JIT , which operates by recording control flow and data types during interpreter execution. This data then informed

2847-519: The construction of trace trees , highly specialized paths of native code . Improvements to JägerMonkey eventually made TraceMonkey obsolete, especially with the development of the SpiderMonkey type inference engine. TraceMonkey is absent from SpiderMonkey from Firefox 11 onward. JägerMonkey, internally named MethodJIT, was a whole-method JIT compiler designed to improve performance in cases where TraceMonkey could not generate stable native code . It

2920-403: The development and expansions of free and open-source software movements exist all over the world. These organizations are dedicated to goals such as teaching and spreading technology. As listed by a former vice president of the Open Source Initiative , some American organizations include the Free Software Foundation , Software Freedom Conservancy , the Open Source Initiative and Software in

2993-461: The distribution of project information that focuses on end users. The basic roles OSS participants can fall into multiple categories, beginning with leadership at the center of the project who have control over its execution. Next are the core contributors with a great deal of experience and authority in the project who may guide the other contributors. Non-core contributors have less experience and authority, but regularly contribute and are vital to

SpiderMonkey - Misplaced Pages Continue

3066-601: The focus on patent rights within these licenses, which has seen backlash from the OSS community, who prefer other forms of IP protection. Another issue includes technological protection measures (TPM) and digital rights management (DRM) techniques which were internationally legally recognized and protected in the 1996 World Intellectual Property Organization (WIPO) Treaty . Open source software proponents disliked these technologies as they constrained end-users potentially beyond copyright law. Europe responded to such complaints by putting TPM under legal controls, representing

3139-531: The internal function representation. Although this prohibits optimizations that require instruction reordering, JägerMonkey compiling has the advantage of being very fast, which is useful for JavaScript since recompiling due to changing variable types is frequent. Mozilla implemented a number of critical optimizations in JägerMonkey, most importantly polymorphic inline caches and type inference . The difference between TraceMonkey and JägerMonkey JIT techniques and

3212-401: The language must 'look like Java ' ".) In late 1996, Eich, needing to "pay off [the] substantial technical debt " left from the first year, "stayed home for two weeks to rewrite Mocha as the codebase that became known as SpiderMonkey". (Mocha was the original working name for the language.) In 2011, Eich transferred management of the SpiderMonkey code to Dave Mandelin. SpiderMonkey implements

3285-470: The layout used by the Baseline Interpreter and then branches to that interpreter as though we were running it all along. Building this stack frame may use special side-table saved by Warp to reconstruct values that are not otherwise available. SpiderMonkey is intended to be embedded in other applications that provide host environments for JavaScript. An incomplete list follows: SpiderMonkey includes

3358-480: The many benefits provided, a huge issue to be considered is cybersecurity . While accidental vulnerabilities are possible, so are attacks by outside agents. Because of these fears, governmental interest in contributing to the governance of software has become more prominent. However, these are the broad strokes of the issue, with each country having their own specific politicized interactions with open-source software and their goals for its implementation. For example,

3431-560: The mid 2000s, more and more tech companies have begun to use OSS. For example, Dell's move of selling computers with GNU/Linux already installed. Microsoft itself has launched a Linux-based operating system despite previous animosity with the OSS movement. Despite these developments, these companies tend to only use OSS for certain purposes, leading to worries that OSS is being taken advantage of by corporations and not given anything in return. While many governments are interested in implementing and promoting open-source software due to

3504-466: The need for both was explained in a hacks.mozilla.org article . A more in-depth explanation of the technical details was provided by Chris Leary, one of SpiderMonkey's developers, in a blog post Archived 9 December 2012 at archive.today . More technical information can be found in other developer's blogs: dvander , dmandelin . IonMonkey was a JavaScript JIT compiler of Mozilla, which was aimed to enable many new optimizations that were impossible with

3577-413: The now-deprecated hash-bang fragment ( #! ). Archive.today records only text and images, excluding XML , RTF , spreadsheet ( xls or ods ) and other non-static content. However, videos for certain sites, like X (formerly Twitter) , are saved. It keeps track of the history of snapshots saved, requesting confirmation before adding a new snapshot of an already saved page. Pages are captured at

3650-505: The number of people employed in the IT sector. OSS can be highly reliable when it has thousands of independent programmers testing and fixing bugs of the software. Open source is not dependent on the company or author that originally created it. Even if the company fails, the code continues to exist and be developed by its users. OSS is flexible because modular systems allow programmers to build custom interfaces, or add new abilities to it and it

3723-710: The original webpage including any functional live links; the other is a screenshot of the page. The identity of its operator is not known. Archive.today was founded in 2012. The site originally branded itself as archive.today, but changed the primary mirror to archive.is in May 2015. It began to deprecate the archive.is domain in favor of other mirrors in January 2019. As of 2021, archive.today had saved about 500 million pages. Archive.today can capture individual pages in response to explicit user requests. Since its beginning, it has supported crawling pages with URLs containing

SECTION 50

#1732917679393

3796-435: The perceived benefits or costs, such as improved reputation or value of the project. The motivations of developers can come from many different places and reasons, but the important takeaway is that money is not the only or even most important incentivization . Because economic theory mainly focuses on the consumption of scarce resources, the OSS dynamic can be hard to understand. In OSS, producers become consumers by reaping

3869-404: The potential to quicken innovation and create of social value. In France for instance, a policy that incentivized government to favor free open-source software increased to nearly 600,000 OSS contributions per year, generating social value by increasing the quantity and quality of open-source software. This policy also led to an estimated increase of up to 18% of tech startups and a 14% increase in

3942-570: The prior JägerMonkey architecture. IonMonkey was a more traditional compiler: it translated SpiderMonkey bytecode into a control-flow graph , using static single assignment form (SSA) for the intermediate representation . This architecture enabled well-known optimizations from other programming languages to be used for JavaScript, including type specialization, function inlining , linear-scan register allocation , dead code elimination , and loop-invariant code motion . The compiler can emit fast native code translations of JavaScript functions on

4015-574: The project is fully released and only changed through minor bug fixes. Open source implementation of a standard can increase adoption of that standard. This creates developer loyalty as developers feel empowered and have a sense of ownership of the end product. Moreover, lower costs of marketing and logistical services are needed for OSS. OSS can be a tool to promote a company's image, including its commercial products. The OSS development approach has helped produce reliable, high quality software quickly and inexpensively. Open source development offers

4088-759: The project's development. New contributors are the least experienced but with mentorship and guidance can become regular contributors. Some possible ways of contributing to open-source software include such roles as programming , user interface design and testing, web design , bug triage , accessibility design and testing, UX design , code testing, and security review and testing. However, there are several ways of contributing to OSS projects even without coding skills. For example, some less technical ways of participating are documentation writing and editing, translation , project management , event organization and coordination, marketing, release management, community management, and public relations and outreach. Funding

4161-465: The rapid evolution of the software. According to Feller et al. (2005), the terms "free software" and "open-source software" should be applied to any "software products distributed under terms that allow users" to use, modify, and redistribute the software "in any manner they see fit, without requiring that they pay the author(s) of the software a royalty or fee for engaging in the listed activities." Despite initially accepting it, Richard Stallman of

4234-431: The rewards of contributing to a project. For example, a developer becomes well regarded by their peers for a successful contribution to an OSS project. The social benefits and interactions of OSS are difficult to account for in economic models as well. Furthermore, the innovation of technology creates constantly changing value discussions and outlooks, making economic model unable to predict social behavior. Although OSS

4307-490: The same license while weak copyleft licenses require the use of the same license only under certain conditions. Examples of this type of license include the GNU family of licenses , and the MPL and EPL licenses. The similarities between these two categories of licensing include that they provide a broad grant of copyright rights, require that recipients preserve copyright notices, and that

4380-449: The search to an exact sequence of keywords present in the title or in the body of the webpage, whereas the insite operator restricts it to a specific Internet domain. Once a web page is archived, it cannot be deleted directly by any Internet user. Removing advertisements, popups or expanding links from archived pages is possible by asking the owner to do it on his blog. While saving a dynamic list , archive.today search box shows only

4453-525: The service from all Finnish IP addresses , stating on Twitter that they did this in order to avoid escalating a dispute they allegedly had with the Finnish government. In 2016, the Russian communications agency Roskomnadzor began blocking access to archive.is from Russia. Since May 2018 Cloudflare 's 1.1.1.1 DNS service would not resolve archive.today's web addresses, making it inaccessible to users of

SECTION 60

#1732917679393

4526-500: The similarity of the Artistic license to other open-source software licenses, the ruling created a precedent that applied widely. Examples of free-software license / open-source licenses include Apache licenses , BSD licenses , GNU General Public Licenses , GNU Lesser General Public License , MIT License , Eclipse Public License and Mozilla Public License . Several gray areas exist within software regulation that have great impact on open-source software, such as if software

4599-401: The software evolves. Linus's law states that given enough eyeballs all bugs are shallow. This means that if many users view the source code, they will eventually find all bugs and suggest how to fix them. Some users have advanced programming skills, and furthermore, each user's machine provides an additional testing environment. This new testing environment offers the ability to find and fix

4672-484: The software should be modular allowing for parallel development on independent components. Dynamic decision-making structure: There is a need for a decision-making structure, whether formal or informal, that makes strategic decisions depending on changing user requirements and other factors. Compare with extreme programming . The process of Open source development begins with a requirements elicitation where developers consider if they should add new features or if

4745-453: The software to implement the author's copyright rights without having to use the same license for distribution. Examples of this type of license include the BSD , MIT , and Apache licenses . Copyleft licenses are different in that they require recipients to use the same license for at least some parts of the distribution of their works. Strong copyleft licenses require all derivative works to use

4818-568: The software, component security and integrity, and foreign governmental influence. Another issue for governments in regard to open source is their investments in technologies such as operating systems , semiconductors , cloud , and artificial intelligence . These technologies all have implications for global cooperation, again opening up security issues and political consequences. Many countries have to balance technological innovation with technological dependence in these partnerships. For example, after China's open-source dependent company Huawei

4891-425: The software. Commercial pressures make traditional software developers pay more attention to customers' requirements than to security requirements, since such features are somewhat invisible to the customer. In open-source software development, tools are used to support the development of the product and the development process itself. Version control systems such as Centralized Version control system (CVCS) and

4964-448: The text when visited again. Web pages can be duplicated from archive.today to web.archive.org as second-level backup , but archive.today does not save its snapshots in WARC format. The reverse—from web.archive.org to archive.today—is also possible, but the copy usually takes more time than a direct capture. Historically, website owners had the option to opt out of Wayback Machine through

5037-401: The use of the robots exclusion standard (robots.txt), and these exclusions were also applied retroactively. Archive.today does not obey robots.txt because it acts "as a direct agent of the human user." As of 2019, Wayback Machine no longer obeys robots.txt. The research toolbar enables advanced keywords operators, using * as the wildcard character . A couple of quotation marks address

5110-409: The value of open-source software to firms is $ 8.8 trillion, as firms would need to spend 3.5 times the amount they currently do without the use of open source software. Open-source code can be used for studying and allows capable end users to adapt software to their personal needs in a similar way user scripts and custom style sheets allow for web sites, and eventually publish the modification as

5183-402: Was first released in Firefox 4 and eventually entirely supplanted TraceMonkey. It has itself been replaced by IonMonkey. JägerMonkey operated very differently from other compilers in its class: while typical compilers worked by constructing and optimizing a control-flow graph representing the function, JägerMonkey instead operated by iterating linearly forward through SpiderMonkey bytecode ,

5256-404: Was much debate on whether to protect it as intellectual property under patent law , copyright law or establishing a unique regulation. Ultimately, copyright law became the standard with computer programs being considered a form of literary work, with some tweaks of unique regulation. Software is generally considered source code and object code , with both being protectable, though there

5329-547: Was prevented from using Google's Android system in 2019, they began to create their own alternative operating system: Harmony OS . Germany recently established a Sovereign Tech Fund , to help support the governance and maintenance of the software that they use. Archive.today archive.today (formerly archive.is ) is a web archiving website founded in 2012 that saves snapshots on demand, and has support for JavaScript -heavy sites such as Google Maps and X . archive.today records two snapshots: one replicates

#392607