Saturday, April 5, 2014

Announcing jsmime 0.2

Previously, I've been developing JSMime as a subdirectory within comm-central. However, after discussions with other developers, I have moved the official repository of record for JSMime to its own repository, now found on GitHub. The repository has been cleaned up and the feature set for version 0.2 has been selected, so that the current tip on JSMime (also the initial version) is version 0.2. This contains the feature set I imported into Thunderbird's source code last night, which is to say support for parsing MIME messages into the MIME tree, as well as support for parsing and encoding email address headers.

Thunderbird doesn't actually use the new code quite yet (as my current tree is stuck on a mozilla-central build error, so I haven't had time to run those patches through a last minute sanity check before requesting review), but the intent is to replace the current C++ implementations of nsIMsgHeaderParser and nsIMimeConverter with JSMime instead. Once those are done, I will be moving forward with my structured header plans which more or less ought to make those interfaces obsolete.

Within JSMime itself, the pieces which I will be working on next will be rounding out the implementation of header parsing and encoding support (I have prototypes for Date headers and the infernal RFC 2231 encoding that Content-Disposition needs), as well as support for building MIME messages from their constituent parts (a feature which would be greatly appreciated in the depths of compose and import in Thunderbird). I also want to implement full IDN and EAI support, but that's hampered by the lack of a JS implementation I can use for IDN (yes, there's punycode.js, but that doesn't do StringPrep). The important task of converting the MIME tree to a list of body parts and attachments is something I do want to work on as well, but I've vacillated on the implementation here several times and I'm not sure I've found one I like yet.

JSMime, as its name implies, tries to work in as pure JS as possible, augmented with several web APIs as necessary (such as TextDecoder for charset decoding). I'm using ES6 as the base here, because it gives me several features I consider invaluable for implementing JavaScript: Promises, Map, generators, let. This means it can run on an unprivileged web page—I test JSMime using Firefox nightlies and the Firefox debugger where necessary. Unfortunately, it only really works in Firefox at the moment because V8 doesn't support many ES6 features yet (such as destructuring, which is annoying but simple enough to work around, or Map iteration, which is completely necessary for the code). I'm not opposed to changing it to make it work on Node.js or Chrome, but I don't realistically have the time to spend doing it myself; if someone else has the time, please feel free to contact me or send patches.

13 comments:

Company Switzerland said...

There are several advantages of forming a company in Switzerland, according to the World Bank report on ease of doing business. Please consider registering a company in Switzerland, especially, if your country of domicile has certain complications (namely political, regulatory or tax-related).

Roxane Fabin said...

Wondering where to get an Online Matlab Tutor? At Matlab Assignment Help, we offer timely classes for all Matlab students in need. Other than the tuition classes, we also complete your assignments ensuring that you get the top grade in your class. Our prices are fair because we understand that most students don’t have a source of income. However, the fair price does not mean the quality of work is compromised. Visit our website “ Matlab Homework Help”today and talk to an expert.

sadiya perween said...

My control systems solution was great but unfortunately, it was delivered a day after the deadline. I took Matlab assignment help from here because I had read some really good reviews about MatlabAssignmentExperts and especially where the customers were happy about their assignments being delivered on time and sometimes even a few days before the deadline. I had a totally different experience and the only reason I was able to beat my deadline was that I had given the Matlab assignment helperwho handled my task the wrong deadline. Still, the platform isn’t so bad because I got a decent grade from the solution they prepared but they should address the late delivery issue asap.

sadiya perween said...

If your work is not satisfactory do you have a complaint center or what happens when I need a task re-done? There are times when assignments need revision and I would like to know what process is followed in your website when seeking a revision. I need economics assignment help and that is why I am seeking clarification. You can complete it or get me an economics homework help expert from your website. Provided the work is quality I will have no issues.

Ella Taylor said...

Any programmer that has used STATA for a while has probably used the option for their STATA assignment. You too could testify that you have used it in your STATA assignment help services But to some, it's not that very clear on how it works. But the simplest explanation that I can give about it is that it tries to process a command by grouping the variables. I used your statistics homework help services and I know a thing or two about your STATA team.

Ella Taylor said...

Do you have a C++ homework help tutor from Canada? I have a small programming assignment that can best be sorted by a C++ expert. The only reason why I want a programming homework help experts from our country is that I want someone who clearly understands our system. If you do not have any tutor from Canada the only other country I would consider is the United States. I will be waiting for your communication on the same.

Ella Taylor said...

I want to be honest with you. I am not the type of person who easily gets annoyed at people. Three months ago I sent you an email seeking communications system assignment help. My task was completed on time but after a struggle with the first Matlab assignment help, I was assigned. He was not responsive at all. I only enjoyed working with you after I demanded for a new Matlab homework help solver. The new person I was given was amazing. Always available when needed and a good communicator. I don’t know whether you allow people to decide who should handle their assignments because if it was possible then that is what I would do for the rest of my assignments.

Ella Taylor said...

I have a very urgent assignment which is required in less than 6 hours. Part of the work is done and therefore I need an economics assignment help expert to complete part three of the question and check whether I have done the other parts correctly. My budget for it is very minimal and therefore I don’t expect you to charge me more than $50 for the small remaining part. The beauty is that if I am happy with your solutions I'll need your economics homework help services again.

Sophia Jones said...

You are an experienced statistics homework help who has a bachelor's degree or a master's degree in statistics. I need your help in developing an appropriate study plan that can help me succeed in statistics. You have been there and clearly know what it takes to succeed in statistics. You can share some tips with me. Lastly let me know whether you offer SAS homework help. I am in dire need of a statistics assignment help expert with SAS knowledge.

Sophia Jones said...

People understand things differently. My brother told me that C++ was his simplest language when taking programming. When I started it proved to be my hardest language. Since I worked with your programming homework help team, I decided to hire your C++ homework help team to help me out. I want you to do all my assignments because I don’t seem to get anything in this class. I will also require some lessons from you.

Sophia Jones said...

The Matlab homework help expert who did my communication systems assignment provided a solution worse than what a high schooler would deliver. I was so frustrated because I had paid quite an amount of money for the task. Even after asking for revisions, the solution didn’t get any better. They had to assign the work to another Matlab assignment help expert and I was eventually provided with quality Matlab assignment help. Not the best experience but the second writer was really nice.

Sophia Jones said...

Do you work alone or do you work as a team? I want to hire you as my economics homework help expert but I am afraid that you may not handle the work alone. If you have other economics assignment help experts to help you then that would make more sense. I am concerned because I will not allow late work. My professor never accepts late work and therefore not delivering on time would mean a re-take.

Selectmytutor said...

very interesting post.this is my first time visit here.i found so many interesting stuff in your blog especially its discussion..thanks for the post!
Home Tutors
| Online Tutoring Jobs UK