Our combined changelog and roadmap. It contains todos as well as dones.
Only project-wide changes are mentioned here. For individual function changelogs, please refer to their respective Git histories.
Locutus does not follow SemVer as we're a work in progress, and even though we try, we cannot guarantee BC-safety for the hundreds of contributions across the many languages that Locutus is assimilating.
Instead, we recommend using version pinning, and inspect changes for the few particular functions you rely on when you upgrade.
Ideas that will be planned and find their way into a release at one point
- Have one way of checking pure JS arrays vs PHP arrays (vs:
Object.prototype.toString.call(arr1) === '[object Array]'
,typeof retObj[p] === 'object'
,var asString = Object.prototype.toString.call(mixedVar) var asFunc = _getFuncName(mixedVar.constructor) if (asString === '[object Object]' && asFunc === 'Object') {
) - Compare example test cases for PHP against
php -r
to make sure they are correctly mimicking the most recent stable behavior - Investigate if we can have one helper function for intersecting, and use that in all
array_*diff*
andarray_*sort*
functions. Refrain from usinglabels
, which those functions currently still rely on - Investigate if we can have one helper function for sorting, and use that in all
*sort*
functions - Investigate if we can have one helper function to resolve
Function/'function'/'Class::function'/[$object, 'function']
, and use that inis_callable
,array_walk
,call_user_func_array
etc. - Port a few more tricky/inter-depending Ruby functions
- Port a few more tricky/inter-depending Python functions
- Port a few more tricky/inter-depending Go functions
- Parse
require
s with AST just like Browserify does. Then we can add dependencies back to website - website: Render authors server-side
Released: Not yet
- Address the 25 remaining test failures that are currently skipped (find out which ones via
npm run test:languages:noskip
)
Released: 2016-06-16. Commit log: https://github.com/kvz/locutus/compare/v2.0.5...v2.0.6
- Language fixes
Released: 2016-06-16. Commit log: https://github.com/kvz/locutus/compare/v2.0.4...v2.0.5
- Cache node modules on Travis so we'll be less dependent on npm connectivity
Released: 2016-05-25. Commit log: https://github.com/kvz/locutus/compare/v2.0.3...v2.0.4
- Upgrade depurar to 0.2.2, fixing an issue with the testwriter (@kukawski)
- Add the 'reimplemented by' and 'parts by' contributionKeys to the /authors website page
- Fix linting warnings when hacking on website by adding eslint dependencies locally
- Improve array_rand: Fix coding style, hangs when selected huge number of keys from huge array, function signature (@kukawski)
Released: 2016-05-22. Commit log: https://github.com/kvz/locutus/compare/v2.0.2...v2.0.3
- Minor
util.js
refactoring - Use hexo deploy instead of custom bash script to aid Windows compatibility
- Use cross-env and rimraf in build scripts to aid Windows compatibility
- Improve Travis auto-deployments (now using official deploy methods)
- Switch from locutusjs.io to locutus.io
- Triage all open issues and PRs
- Triage all open issues and PRs
- docs: Miscellaneous cosmetic updates
- website: Miscellaneous cosmetic updates
- website: Show languages & functions in profile sidebar
- website: Add social buttons
- website: Let Travis auto-deploy to gh-pages on master changes
- website: Use Hexo deploy vs bash script
Released: 2016-05-02. Commit log: https://github.com/kvz/locutus/compare/v2.0.1...v2.0.2
- Don't use
files
in package.json as we don't ship all ofdist
now
Released: 2016-05-02. Commit log: https://github.com/kvz/locutus/compare/v2.0.0...v2.0.1
- Don't use
bin
in package.json as we don't shipcli.js
Released: 2016-05-02. Commit log: https://github.com/kvz/locutus/compare/v1.3.2...v2.0.0
- website: Add profile to sidebar
- Rename
_locutus_shared
to_helpers
. Rename_locutus_shared_bc
to_bc
- website: Fix jumpy scrolling due to on the githubs
- website: DRY up add_more code
- website: About as homepage
- Transpile to ES5 before publishing to npm
- Add
estarget
option to all functions, setip2long
toes2015
- Change
fix(me)?
andTodo
to@todo
- Replace single line
/**/
comments with//
- Enforce a 100 character line-length via eslint, and change all functions accordingly
- Do not pass values by reference via the
window
global, use e.g.countObj.value
anderrorObj.value
instead - Have one way of getting an
ini
value and its default - Track all cases of
setTimeout
, use them without window prefix. Removecodez
replace hack - Track all cases of XMLHttpRequest
- Test
is_array
in-browser to see if therequire
forini_get
works correctly with Browserify - Deprecate blocking ajax requests in e.g.
file_get_contents
- Use native
sha1
andmd5
encoding when available - Remove XUL from functions
- Rename
strictForIn
tosortByReference
- Remove
// (BEGIN|END) (STATIC|REDUNDANT)
- Index all
note
s - Either deprecate or document all functions using
eval
ornew Function
- Port Util to ES6 class
- Write one function (
ip2long
) in ES6 and make it pass tests & linting - Deprecate support for node_js: 0.8
- Make Travis fail on eslint issues
- Move CHANGELOG to own file
- Make all functions pass eslint with JavaScript Standard Style
- Remove
_workbench
and_experimental
. They are available for reference in1.3.2
but making them harder to find for newcomers should help avoid a lot of complaints - Move functions that overly rely on ini & locales & global & ajax file operations to _legacy
- Address ~50 test failures that were previously skipped and now enabled
-
json_*
functions can leverage Node's - Add ES6 capabilities
- Adopt better global detection, use
$locutus.golang.<specifics>
- Add more 'social' buttons to website (twitter, github)
- Rework injectweb after structural changes in util.js
- Use
require
for dependencies - Remove
;
from examples in accordance with JavaScript Standard Style - Use mocha for generating language tests
- Use require for dependencies
- In util.opener: First
*
should point to the requesting/current language - Split out the npm module so you could do
var sprintf = require('locutus/sprintf')
- Launch BC breaking blogpost
- Roll out support for Ruby, C, Go, Python
Released: April 4, 2016
- Start using a CHANGELOG https://github.com/kvz/locutus/releases/tag/v1.3.2