{"action":"created","issue":{"url":"https://api.github.com/repos/micropython/micropython/issues/2077","repository_url":"https://api.github.com/repos/micropython/micropython","labels_url":"https://api.github.com/repos/micropython/micropython/issues/2077/labels{/name}","comments_url":"https://api.github.com/repos/micropython/micropython/issues/2077/comments","events_url":"https://api.github.com/repos/micropython/micropython/issues/2077/events","html_url":"https://github.com/micropython/micropython/pull/2077","id":154849411,"number":2077,"title":"Streams refactor per #2056","user":{"login":"pfalcon","id":500451,"avatar_url":"https://avatars.githubusercontent.com/u/500451?v=3","gravatar_id":"","url":"https://api.github.com/users/pfalcon","html_url":"https://github.com/pfalcon","followers_url":"https://api.github.com/users/pfalcon/followers","following_url":"https://api.github.com/users/pfalcon/following{/other_user}","gists_url":"https://api.github.com/users/pfalcon/gists{/gist_id}","starred_url":"https://api.github.com/users/pfalcon/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pfalcon/subscriptions","organizations_url":"https://api.github.com/users/pfalcon/orgs","repos_url":"https://api.github.com/users/pfalcon/repos","events_url":"https://api.github.com/users/pfalcon/events{/privacy}","received_events_url":"https://api.github.com/users/pfalcon/received_events","type":"User","site_admin":false},"labels":[],"state":"closed","locked":false,"assignee":null,"milestone":null,"comments":9,"created_at":"2016-05-14T11:44:56Z","updated_at":"2016-05-18T07:36:53Z","closed_at":"2016-05-17T23:42:12Z","pull_request":{"url":"https://api.github.com/repos/micropython/micropython/pulls/2077","html_url":"https://github.com/micropython/micropython/pull/2077","diff_url":"https://github.com/micropython/micropython/pull/2077.diff","patch_url":"https://github.com/micropython/micropython/pull/2077.patch"},"body":"See #2056 "},"comment":{"url":"https://api.github.com/repos/micropython/micropython/issues/comments/219949210","html_url":"https://github.com/micropython/micropython/pull/2077#issuecomment-219949210","issue_url":"https://api.github.com/repos/micropython/micropython/issues/2077","id":219949210,"user":{"login":"pfalcon","id":500451,"avatar_url":"https://avatars.githubusercontent.com/u/500451?v=3","gravatar_id":"","url":"https://api.github.com/users/pfalcon","html_url":"https://github.com/pfalcon","followers_url":"https://api.github.com/users/pfalcon/followers","following_url":"https://api.github.com/users/pfalcon/following{/other_user}","gists_url":"https://api.github.com/users/pfalcon/gists{/gist_id}","starred_url":"https://api.github.com/users/pfalcon/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pfalcon/subscriptions","organizations_url":"https://api.github.com/users/pfalcon/orgs","repos_url":"https://api.github.com/users/pfalcon/repos","events_url":"https://api.github.com/users/pfalcon/events{/privacy}","received_events_url":"https://api.github.com/users/pfalcon/received_events","type":"User","site_admin":false},"created_at":"2016-05-18T07:36:53Z","updated_at":"2016-05-18T07:36:53Z","body":"> I can't see the reason for having 16 bytes aligned stack when the widest data alignment is 4 bytes either. I can ask.\r\n\r\nUsual reasons would be compatibility with other CC (for example, for windowing CC such alignment may make good sense), worst-case widest data alignment, or aligning to cache line alignment. For example, on x86, MMX, etc. SIMD instructions don't support arbitrary data alignment (== didn't for some some CPU families), so for the worst-case scenario that a compiler may apply MMX instructions to args on stack make a conservative stack ABI requirement. ARM double-load requires 8 byte alignment even on CPUs where 4-byte unaligned loads are handled, similar conservative hampering of each and every non-leaf function. Windowing, pseudo-windowing stuff like x64 red zones are also clear cases. Nothing of that applies to xtensa-lx106 (except for compat with windowing CC). So, the point is: some time later, I may look for cute compiler options to break established calling conventions (for x86 it's -mpreferred-stack-boundary= and friends for example) and if won't find them, would ask you if something can be done about it. It's low prio, nothing needs to be done now, just wanted to share a concern I had for a while. Thanks for the response!\r\n  "}}