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.
Ideas that will be planned and find their way into a release at one point
- Address the 25 remaining test failures that are currently skipped (find out which ones via
yarn test:languages:noskip
) - Compare example test cases for PHP against
php -r
to make sure they are correctly mimicking the most recent stable behavior - 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') {
) - 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. - Parse
require
s with AST just like Browserify does. Then we can add dependencies back to website - Port a few more tricky/inter-depending Go functions
- Port a few more tricky/inter-depending Python functions
- Port a few more tricky/inter-depending Ruby functions
- website: Render authors server-side
- website: Fix the search functionality
Released: TBA. Diff.
- [ ]
Released: 2024-04-05. Diff.
- Update intro and add to the NPM module as a
README.md
Released: 2024-04-05. Diff.
- dx: Add
use strict
to generated tests - dx: Add Stale Action
- file_exists: Introduced (in #461, thx @erikn69)
- strtotime: Add support oracle dates (fixes #340)
- bin2hex: Add support for multi-byte characters (fixes #427)
- var_dump: Detect circular references (fixes #305)
- escapeshellarg: Add Windows support (fixes #395)
- fmod: Fix Uncaught RangeError: toFixed() digits argument must be between 0 and 100 (thx @dekairi, fixes #417)
Released: 2024-04-05. Diff.
- Relax yarn engine requirement (fixes #467)
- Allow for custom mocha tests for functions (that arent generated based on header comments)
Released: 2024-04-04. Diff.
- Fix issue #458: unserialize fails when serialized array contains (@kukawski)
- dx: Switch from
master
->main
branch - dx: Upgrade to Yarn 4 managed by Corepack
- dx: Add testing for Node 20
- dx: Add prettier & upgrade ESLint & StandardJS
- dx: Upgrade Hexo to latest
- dx: Clarify contributing docs
- dx: Allow all core contributors to cut NPM releases by pushing Git tags (GHA CI handles the rest)
- dx: Upgrade all remaining dependencies
Released: 2019-06-12. Diff.
- Switch from Travis CI to GitHub Actions
- Fix ReDOS on IPv6
- Basic timezone support in strtotime
Released: 2019-06-12. Diff.
- functions: Community-contributed function improvements, see respective functions' changelogs in the Diff:
- ci: test Node.js 6, 8, 10 and 11 (#384)
- website: Fix code listing on locutus website (#379)
Released: 2018-09-07. Diff.
- functions: Community-contributed function improvements, see respective functions' changelogs in the Diff.
Released: 2017-06-22. Diff.
- functions: Community-contributed function improvements, see respective functions' changelogs in the Diff.
Released: 2017-02-23. Diff.
- Upgrade eslint and fix newly found issues accordingly
- functions: Community-contributed function improvements, see respective functions' changelogs in the Diff.
Released: 2017-02-09. Diff.
- functions: Community-contributed function improvements, see respective functions' changelogs in the Diff.
Released: 2016-06-16. Diff.
- Language fixes
Released: 2016-06-16. Diff.
- Cache node modules on Travis so we'll be less dependent on npm connectivity
Released: 2016-05-25. Diff.
- 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. Diff.
- 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 main changes
- website: Use Hexo deploy vs bash script
Released: 2016-05-02. Diff.
- Don't use
files
in package.json as we don't ship all ofdist
now
Released: 2016-05-02. Diff.
- Don't use
bin
in package.json as we don't shipcli.js
Released: 2016-05-02. Diff.
- 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/locutusjs/locutus/releases/tag/v1.3.2