Giter Club home page Giter Club logo

chakracore-wiki's Introduction

We welcome community submissions to this Wiki via Pull Requests on this repo!

If you are adding a page, please note that the title of the page is determined by
the file name. Hyphens in the file names will become spaces in the titles of the
pages. Refer to existing files as examples of the naming convention.

Note: Please do not rename this file from README.txt to README.md.
README.txt will not show up in the Wiki view, but README.md will.


# ChakraCore-wiki Maintainers' Workflow

Small changes are often made by the Wiki maintainers directly via the Wiki
interface, and those changes are not automatically mirrored in this repo.

Due to low volume of changes, this repo (the ChakraCore-wiki repo) is manually
(rather than automatically) kept in sync with the Wiki at
https://github.com/Microsoft/ChakraCore/wiki.

It is recommended to configure your remotes as follows to reduce ambiguity:

    git remote add wiki https://<username>:<token>@github.com/Microsoft/ChakraCore.wiki.git
    git remote add repo https://<username>:<token>@github.com/Microsoft/ChakraCore-wiki.git
    git remote add user https://<username>:<token>@github.com/<username>/ChakraCore-wiki.git

The `wiki` remote is updated when maintainers manually make changes through the
GitHub Wiki interface.

The `repo` remote is updated when commits are made directly to this repo.

The `user` remote is the remote to which you will push branches when you want to
make PRs against the `repo` remote. You can also bypass PRs and push directly to
the `wiki` remote, since there is no automation around or checks on the wiki.

To avoid merge conflicts, when possible, before making changes via this repo or
merging any pull requests, please manually sync changes from the `wiki` remote
as follows:

    git checkout master
    git fetch --all
    git merge --ff-only wiki/master
    git push repo master
    git push user master  # optional, but recommended to keep your user clone in sync

If `wiki` and `repo` have become out of sync and you need to merge them:

    git checkout master  # tracking the last time you pushed repo to wiki
    git fetch --all
    git merge --ff-only repo/master  # sync to latest repo
    git merge wiki/master  # merge the wiki changes into the repo
    
    # Merging wiki/master into repo/master will keep repo/master changes visible in --first-parent history
    
    # push all remotes to keep things in sync
    git push repo master
    git push wiki master
    git push user master  # optional, but recommended

chakracore-wiki's People

Contributors

abchatra avatar alexgwolff avatar aruneshchandra avatar boingoing avatar cellule avatar curtisman avatar digitalinfinity avatar dilijev avatar duongnhn avatar edmaurer avatar ianwjhalliday avatar irbull avatar jackhorton avatar kfarnung avatar kumpera avatar leirocks avatar liminzhu avatar louislaf avatar mattzeunert avatar microsoft-github-policy-service[bot] avatar mslaguana avatar obastemur avatar penguinwizzard avatar pleath avatar rhuanjl avatar sethbrenith avatar sethgaurav avatar taritsyn avatar tcare avatar xiaoyinl avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

chakracore-wiki's Issues

Software Write Barrier should clarify need for software solution on non-Windows

The article simply claims that "hardware write barrier is not available", but does not explain why similar mechanisms are not used, e.g. if they are not usable, not fast enough, not convenient or the author simply was not aware of them.
Linux for example has soft-dirty, see Documentation/vm/soft-dirty.txt
It works pretty similar to the Windows feature I'd claim, HOWEVER resetting its state always operates on all of the process' memory space instead of just specific ranges, it likely is also slower due to being pagefault-based (but then, at least on ARM architecture even the Windows feature surely must be pagefault-based?).
It is possible to map pages read-only and catch SIGSEGV, alternatively there is also MADV_USERFAULT (though I have not investigated how usable it is for catching only writes).
All these in a library admittedly have the issue of potentially interfering with the host application if it also uses the feature, but the wiki at least mentioning those options and thoughts on their usefulness might be useful for anyone who'd like to try their hand at optimization of this feature for non-Windows.

Add a page describing post-release support lifecycle.

It seems like there's some confusion over which versions of ChakraCore we will be shipping patch updates to. My understanding was that we're going to support the current and previous releases (N & N-1). Since our current release is 1.3.* that would mean we will support 1.2.* and 1.3.* with patch releases. When 1.4.0 is released, we will stop supporting 1.2.* (no more patch releases), but we will continue to support 1.3.*.

Can we clarify whether this is indeed the approach we are planning to take and add content to the Wiki documenting this intention for the community?

/cc @digitalinfinity

Documentation Improvements: How to do basic things with ChakraCore

Adapted from internal feedback:

It would have been helpful if there had been a more descriptive documentation explaining about doing basic things using ChakraCore, like how to expose classes to js, how to receive objects from js with the current state, namespaces, how to get/set attributes, how to invoke a js function, and how to export a C++ function to js. We had to dig into the sample projects hosted in the github page to understand how to do things in ChakraCore. A better documentation could have helped and saved time for us.

If this information is already available in a form other than the example projects, we should try to improve the discoverability of that info.


Adding @liminzhu's list of topics to the main post so we get the handy progress meter:

  • Expose native functions / external objects to JavaScript #44
  • Embed JavaScript functions in C/C++ (suggested by @kphillisjr in #5 (comment))
  • Handle object lifetime and memory management; common AV issues in .NET
  • Implement a simple event-loop and task queue + using promises in JSRT
  • Script serialization with lazy source loading #44
  • Resource throttling
  • Define non-writable property from C/C++(a.k.a. using descriptor)
  • Define C/C++ Getter and Setter
  • TypedArray handling in C/C++
  • Iterating JS array ans setting properties in C++
  • Call functions #44
  • Set up ES6 modules + dynamic import
  • Add native interceptors to JavaScript properties

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.